**************************************************************************************
	;Header frs File-linken

	IFD	Flag_project
Flag_under	set 1
	ENDC
	IFND	Flag_under
Flag_under	set 0
	ENDC
	IFEQ	Flag_under
Flag_under	set 1
	include	Nutz_project
	ELSEIF
**************************************************************************************
		include	binary/Under/Under_ene.src

UChick_Obj0	EQU	Under_Obj_0
UChick_Obj1	EQU	Under_Obj_1
UChick_Obj2	EQU	Under_Obj_2
UChick_Obj3	EQU	Under_Obj_3
UChick_Obj4	EQU	Under_Obj_18		;Skeleton
UChick_Obj5	EQU	Under_Obj_19		;    "
UChick_Obj6	EQU	Under_Obj_20		;    "
UChick_Obj7	EQU	Under_Obj_52		;Halbes Huhn

UMull_Obj0	EQU	Under_Obj_49

UBarrel_Obj0	EQU	Under_Obj_4
UBarrel_Obj1	EQU	Under_Obj_5

UGhost_Obj0	EQU	Under_Obj_6

UTorch_Obj0	EQU	Under_Obj_7
UTorch_Obj1	EQU	Under_Obj_8
UTorch_Obj2	EQU	Under_Obj_9
UTorch_Obj3	EQU	Under_Obj_10

UTree_Obj0	EQU	Under_Obj_12
UTree_Obj1	EQU	Under_Obj_13
UTree_Obj2	EQU	Under_Obj_14
UTree_Obj3	EQU	Under_Obj_15
UTree_Obj4	EQU	Under_Obj_16
UTree_Obj5	EQU	Under_Obj_17

UBall_Obj0	EQU	Under_Obj_45
UBall_Obj1	EQU	Under_Obj_46

UPlatform_Obj0	EQU	Under_Obj_21
UPlatform_Obj1	EQU	Under_Obj_22

UChandelier_Obj0	EQU	Under_Obj_48
UChandelier_Obj1	EQU	Under_Obj_47

UDoor_Obj0	EQU	Under_Obj_43
UDoor_Obj1	EQU	Under_Obj_44
UDoor_Obj2	EQU	Under_Obj_54

UFish_Obj0	EQU	Under_Obj_24
UFish_Obj1	EQU	Under_Obj_25

UFlame_Obj0	EQU	Under_Obj_26
UFlame_Obj1	EQU	Under_Obj_27
UFlame_Obj2	EQU	Under_Obj_28
UFlame_Obj3	EQU	Under_Obj_29

UBumper_Obj0	EQU	Under_Obj_30
UBumper_Obj1	EQU	Under_Obj_31
UBumper_Obj2	EQU	Under_Obj_23

UChest_Obj0	EQU	Under_Obj_32
UChest_Obj1	EQU	Under_Obj_33
UChest_Obj2	EQU	Under_Obj_34
UChest_Obj3	EQU	Under_Obj_35
UChest_Obj4	EQU	Under_Obj_36
UChest_Obj5	EQU	Under_Obj_37
UChest_Obj6	EQU	Under_Obj_38

UChest_Obj7	EQU	Under_Obj_40
UChest_Obj8	EQU	Under_Obj_41
UChest_Obj9	EQU	Under_Obj_42

UChest_Obj10	EQU	Under_Obj_53

UChain_Obj0	EQU	Under_Obj_51

UButton_Obj0	EQU	Under_Obj_55
UButton_Obj1	EQU	Under_Obj_56

**************************************************************************************
S_HUHN_RIGHT	=64
S_HUHN_LEFT		=65
S_HUHN_SKELETT_RIGHT	=66
S_HUHN_SKELETT_LEFT	=67
S_HUHN_FASS_RIGHT	=68
S_HUHN_FASS_LEFT	=69
S_HUHN_Mull		=70
S_HUHNFOOT1		=71
S_HUHNFOOT2		=72
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_UBUMPER		=73	*
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_BOX_HUHN		=74	;
S_BOX_GHOST		=75	*
S_BOX_GEMS		=76	*
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_UDOOR		=78
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_FASS		=79	*
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_GHOST		=80	*
SU_FISH		=81
S_DRAGON		=82
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_LAMP		=83	*
S_FIRE		=84	*
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_FALL_1		=85
S_UP_STONE_1	=86
SU_BUT_D_UP		=87
SU_BUT_W_DOWN	=88
SU_BUT_W_UP		=89
SU_BUT_NOTHING	=90
S_EFF_W_UP		=91
S_EFF_W_DOWN	=92
S_EFF_NOTHING	=93
S_UNDER_COME	=94
S_SPR_Kette		=95
S_KRON_SHORT	=96
S_KRON_LONG		=97
S_MOV_X_WAIT	=98	*
S_MOV_X_MOVE	=99	*
S_MOV_Y_WAIT	=50	*
S_MOV_Y_MOVE	=51	*
S_MOV_X_W_SRE	=52
S_MOV_X_M_SRE	=53
S_MOV_X_SRE_S	=54
S_MOV_X_SRE_L	=55
S_MOV_Y_KETTE_M	=56
S_MOV_Y_KETTE_W	=57
**************************************************************************************
*-------------------------------------------------------------------------------------
*--------------	INFOTABS
*-------------------------------------------------------------------------------------
SU_FISH_I:	dc.l	UFISH_Right_Init
		dc.w	32,32
		dc.l	UFish_Wait_Right_Anm
		dc.w	0,3
		dc.b	0,BOB_MID_PRIO
*-------------------------------------------------------------------------------------
SU_BUT_W_UP_I:	dc.l	IU_Button_W_U_B
		dc.w	10,32
		dc.l	UnButton_Wait_AnimTab
		dc.w	0,2
		dc.b	0,BOB_HI_PRIO
SU_BUT_W_DOWN_I:	dc.l	IU_Button_W_D_B
		dc.w	10,32
		dc.l	UnButton_Wait_AnimTab
		dc.w	0,2
		dc.b	0,BOB_HI_PRIO
SU_BUT_D_UP_I:	dc.l	IU_Button_Door_Up
		dc.w	10,32
		dc.l	UnButton_Wait_AnimTab
		dc.w	0,2
		dc.b	0,BOB_HI_PRIO
SU_BUT_NOTHING_I:	dc.l	IU_Button_Nothing
		dc.w	10,32
		dc.l	UnButton_Wait_AnimTab
		dc.w	0,2
		dc.b	0,BOB_HI_PRIO
*-------------------------------------------------------------------------------------
S_HUHN_RIGHT_I:	dc.l	UHuhn_Init
		dc.w	36,32
		dc.l	UHuhn_Mumie_Right
		dc.w	0,2
		dc.b	0,BOB_MID_PRIO
S_HUHN_LEFT_I:	dc.l	UHuhn_Init
		dc.w	36,32
		dc.l	UHuhn_Mumie_Left
		dc.w	0,2
		dc.b	0,BOB_MID_PRIO

S_HUHN_Mull_I:	dc.l	Mull_Rout
		dc.w	10,16
		dc.l	Mull_R_Anm
		dc.w	0,20
		dc.b	0,BOB_MID_PRIO
*-------------------------------------------------------------------------------------
S_UDOOR_I:	dc.l	UTest_Init_Doors
		dc.w	64,16
		dc.l	UDoor_Anim_Norm
		dc.w	0,20
		dc.b	0,BOB_HI_PRIO
*-------------------------------------------------------------------------------------
S_LAMP_I:	dc.l	Global_LampsUSW
		dc.w	25,16
		dc.l	ULamp_Anim
		dc.w	0,5
		dc.b	BACK_ANIM,BOB_MID_PRIO
S_FIRE_I:	dc.l	Global_LampsUSW
		dc.w	32,32
		dc.l	UFire_Anim
		dc.w	0,5
		dc.b	BACK_ANIM,BOB_MID_PRIO
S_UBUMPER_I:	dc.l	Init_UBumper
		dc.w	28,32
		dc.l	UBumper_Wait_Anm
		dc.w	0,8
		dc.b	0,BOB_HI_PRIO
*-------------------------------------------------------------------------------------
S_GHOST_I:	dc.l	Ghost_Choose_Rout_I
		dc.w	41,48
		dc.l	Ghost_Anm
		dc.w	0,10
		dc.b	0,BOB_MID_PRIO
*-------------------------------------------------------------------------------------
S_BOX_GHOST_I:	dc.l	Box_Gem_Rout_GU
		dc.w	28,48
		dc.l	UBox_Anm
		dc.w	0,8
		dc.b	0,BOB_MID_PRIO
S_BOX_GEMS_I:	dc.l	Box_Gem_Rout_WU
		dc.w	28,48
		dc.l	UBox_Anm
		dc.w	0,8
		dc.b	0,BOB_MID_PRIO
S_UBOX_DAMAGE_I:dc.l	Box_Damage_Rout
		dc.w	16,16
		dc.l	UBox_Dam_L_Anm
		dc.w	0,1
		dc.b	0,BOB_MID_PRIO
S_BOX_HUHN_I:	dc.l	Jump_Box_Rout
		dc.w	28,48
		dc.l	Box_Wait_Anm
		dc.w	0,8
		dc.b	0,BOB_MID_PRIO
*-------------------------------------------------------------------------------------
S_HUHN_FASS_RIGHT_I:	dc.l	HUSTONE_I_R
		dc.w	32,32
		dc.l	USTONE_Right_Anm
		dc.w	0,5
		dc.b	0,BOB_MID_PRIO
S_HUHN_FASS_LEFT_I:	dc.l	HUSTONE_I_L
		dc.w	32,32
		dc.l	USTONE_Left_Anm
		dc.w	0,5
		dc.b	0,BOB_MID_PRIO
S_FASS_I:		dc.l	STONE_Rout1_InitU
		dc.w	32,32
		dc.l	USTONE_Left_Anm
		dc.w	0,3
		dc.b	0,BOB_MID_PRIO
*-------------------------------------------------------------------------------------
S_KRON_SHORT_I:	dc.l	I_Mover_KRON_64
		dc.w	13,48
		dc.l	Kron_AnimTable
		dc.w	0,-1
		dc.b	0,BOB_HI_PRIO
S_KRON_LONG_I:	dc.l	I_Mover_KRON_96
		dc.w	13,48
		dc.l	Kron_AnimTable
		dc.w	0,-1
		dc.b	0,BOB_HI_PRIO

S_MOV_X_W_SRE_I:	dc.l	I_Mover_WaterRout_1_W
		dc.w	15,64
		dc.l	UMover_AnimTable
		dc.w	0,-1
		dc.b	0,BOB_HI_PRIO
S_MOV_X_M_SRE_I:	dc.l	I_Mover_WaterRout_1_M
		dc.w	15,64
		dc.l	UMover_AnimTable
		dc.w	0,-1
		dc.b	0,BOB_HI_PRIO
****
S_MOV_X_SRE_S_I:	dc.l	I_Mover_WaterRout_1_W
		dc.w	15,64
		dc.l	UMover_AnimTable
		dc.w	0,-1
		dc.b	0,BOB_HI_PRIO
****
S_MOV_X_SRE_L_I:	dc.l	I_Mover_WaterRout_1_W
		dc.w	15,64
		dc.l	UMover_AnimTable
		dc.w	0,-1
		dc.b	0,BOB_HI_PRIO

S_MOV_Y_WAIT_I:	;96,300
		dc.l	I_Mover_Y_Rout_1_W
		dc.w	15,64
		dc.l	UMover_AnimTable
		dc.w	0,$ffff
		dc.b	0,BOB_HI_PRIO
S_MOV_Y_MOVE_I:	;96,300
		dc.l	I_Mover_Y_Rout_1_M
		dc.w	15,64
		dc.l	UMover_AnimTable
		dc.w	0,$ffff
		dc.b	0,BOB_HI_PRIO
S_MOV_X_WAIT_I:	;96,300
		dc.l	I_Mover_X_Rout_1_W
		dc.w	15,64
		dc.l	UMover_AnimTable
		dc.w	0,$ffff
		dc.b	0,BOB_HI_PRIO
S_MOV_X_MOVE_I:	;96,300
		dc.l	I_Mover_X_Rout_1_M
		dc.w	15,64
		dc.l	UMover_AnimTable
		dc.w	0,$ffff
		dc.b	0,BOB_HI_PRIO

S_MOV_Y_KETTE_M_I:	;96,300
		dc.l	I_KMover_Y_Rout_1_M
		dc.w	15,64
		dc.l	UMover_AnimTable
		dc.w	0,$ffff
		dc.b	0,BOB_HI_PRIO
S_MOV_Y_KETTE_W_I:	;96,300
		dc.l	I_KMover_Y_Rout_1_W
		dc.w	15,64
		dc.l	UMover_AnimTable
		dc.w	0,$ffff
		dc.b	0,BOB_HI_PRIO

S_FALL_1_I:	dc.l	I_Mover_WaterRout_1_U
		dc.w	15,64
		dc.l	UMover_AnimTable
		dc.w	0,-1
		dc.b	0,BOB_HI_PRIO

**************************************************************************************
*-------------------------------------------------------------------------------------
*--------------	ROUTS
*-------------------------------------------------------------------------------------
**************************************************************************************
**************************************************************************************
*-------------------------------------------------------------------------------------
*--------------	LAMP / FIRE
*-------------------------------------------------------------------------------------
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Global_LampsUSW	*--*>Globalteil von Lamp und Fire
		jsr	Test_Bob_Out
		jsr	Standart_BobAnim
		and	#$fff0,Bob_X_Position(a4)
		;move	#1,Bob_Back_Anim(a4)
		jsr	Show_UnderObject
		rts
*-------------------------------------------------------------------------------------
ULamp_Anim:		dc.w	0
		dc.l	UTorch_Obj0
		dc.w	0,8
		dc.w	0
		dc.l	UTorch_Obj1
		dc.w	0,8
		dc.w	0
		dc.l	UTorch_Obj2
		dc.w	0,8
		dc.w	0
		dc.l	UTorch_Obj3
		dc.w	0,8
		dc.w	ENTRY_END
		dc.l	ULamp_Anim
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UFire_Anim:		dc.w	0
		dc.l	UFlame_Obj0
		dc.w	0,13
		dc.w	0
		dc.l	UFlame_Obj1
		dc.w	0,13
		dc.w	0
		dc.l	UFlame_Obj2
		dc.w	0,13
		dc.w	0
		dc.l	UFlame_Obj3
		dc.w	0,13
		dc.w	ENTRY_END
		dc.l	UFire_Anim

**************************************************************************************
*-------------------------------------------------------------------------------------
*--------------	BUMPER
*-------------------------------------------------------------------------------------
*---------------------------------------------------------------------------
Init_UBumper	*--*>Init Underworld Bumper
		move.b	#-8,GBumper_Bump_Speed(a4)
		move.b	#10,GBumper_Bump_Time(a4)
		and	#$fff0,Bob_X_Position(a4)
		and	#$fff0,Bob_Y_Position(a4)
		;move	#1,Bob_Back_Anim(a4)
		move.l	#Bumper_Rout_Gl,Bob_Routine(a4)
		move.l	#Show_UnderObject,GBumper_Show_Rout(a4)
		move.l	#UBumper_Work_Anm,GBumper_Work_Anim(a4)
		rts
*---------------------------------------------------------------------------
UBumper_Wait_Anm:	dc.w	0
		dc.l	UBumper_Obj0
		dc.w	0,+15
		dc.w	ENTRY_END
		dc.l	UBumper_Wait_Anm
UBumper_Work_Anm:	dc.w	0
		dc.l	UBumper_Obj1
		dc.w	0,+18
		dc.w	0
		dc.l	UBumper_Obj2
		dc.w	0,+20
		dc.w	0
		dc.l	UBumper_Obj2
		dc.w	0,+20
		dc.w	0
		dc.l	UBumper_Obj1
		dc.w	0,+18
		dc.w	0
		dc.l	UBumper_Obj0
		dc.w	0,+15
		dc.w	ENTRY_END
		dc.l	UBumper_Wait_Anm
*---------------------------------------------------------------------------
**************************************************************************************
*-------------------------------------------------------------------------------------
*--------------	MOVER DINGENS
*-------------------------------------------------------------------------------------
UMover_AnimTable:	dc.w	0
		dc.l	UPlatform_Obj0,0
		dc.w	ENTRY_END
		dc.l	UMover_AnimTable
Kron_AnimTable:	dc.w	0
		dc.l	UChandelier_Obj0,0
		dc.w	ENTRY_END
		dc.l	Kron_AnimTable

*-------------------------------------------------------------------------------------
Mover_UGlobal:	*--*>Global Routs for Mover
		jsr	Test_Bob_Out
		*--*>Make Movement
		move.l	Mover_Move_Routine(a4),a0
		jsr	(a0)
		*--*>Test Temet on Top
		jsr	Test_TEMET_On_Top
		*--*>ENDE
		jsr	Show_UnderObject
		rts
*-------------------------------------------------------------------------------------
Mover_UGlobal_Water	*--*>Global Routs for Mover Water
		jsr	Test_Bob_Out
		move.l	Mover_Move_Routine(a4),a0
		jsr	(a0)
		*--*>Test Temet on Top
		move.b	Mover_TEMET_On(a4),d0
		move	d0,-(sp)
		jsr	Test_TEMET_On_Top
		move	(sp)+,d0
		*--*>Test if should Init Y Jump
		tst.b	d0
		beq.s	.TEMET_WAS_NOT_ON
.TEMET_WAS_ON	*--Temet war drauf
		tst.b	Mover_TEMET_On(a4)
		bne.s	.Go_Ende
		move	#WM_JUMP_END,Mover_Y_Offset(a4)
		bra.s	.Go_Ende
.TEMET_WAS_NOT_ON	*--Temet war nicht drauf
		tst.b	Mover_TEMET_On(a4)
		beq.s	.Go_Ende
		move	#WM_JUMP_ANF,Mover_Y_Offset(a4)
.Go_Ende		*--*>Show Mover
		jsr	Show_UnderObject
		rts
*-------------------------------------------------------------------------------------
Mover_UKGlobal:	*--*>Global Routs for Mover
		jsr	Test_Bob_Out
		*--*>Make Movement
		move.l	Mover_Move_Routine(a4),a0
		jsr	(a0)
		*--*>Test Temet on Top
		jsr	Test_TEMET_On_Top
		*--*>ENDE
		jsr	Make_Move_Kette
		jsr	Show_UnderObject
		rts
**************************************************************************************
Mover_Kron		*--*>Gobal Routine for Kronleuchter
		jsr	Test_Bob_Out
		*--*>Make Kron Schwank
		jsr	Make_Schwank
		*--*>Test Temet on Top
		add	#15,Bob_Y_Position(a4)
		jsr	Test_TEMET_On_Top
		sub	#15,Bob_Y_Position(a4)
		*--*>ENDE
		jsr	Make_Kron_Kette
		jsr	Show_UnderObject
		rts
*-------------------------------------------------------------------------------------
Make_Kron_Kette	*---*>Handle Act KKette
		*--*>Anf Pos in d0 d1
		*--*>End Pos in d2 d3
		moveq	#0,d0
		move	Bob_X_Position(a4),d0
		add	#16+5,d0
		move	d0,d2
		moveq	#0,d1
		move	Bob_Y_Position(a4),d1
		move	d1,d3
		sub	Mover_Kron_Size(a4),d1

		add	Bob_X_Offset(a4),d2
		add	Bob_Y_Offset(a4),d3
		*--*>Bere Steigung
		move	d2,d4
		move	d3,d5
		sub	d0,d4
		sub	d1,d5

		ext.l	d4
		ext.l	d5

		swap	d4	;Auf Festkomma bringen.
		swap	d5	;Auf Festkomma bringen.

		asr.l	#3,d4
		lsr.l	#3,d5

		swap	d0	;Auf Festkomma bringen.
		swap	d1	;Auf Festkomma bringen.

*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
		*--*>Bere Real X-Koord first Spr and LoopCounter
		moveq	#8-1,d7
.Check_Act_Element:
		movem.l	d0/d1/d4/d5/d7,-(sp)
		swap	d0
		swap	d1
		jsr	Check_Object_Borders_Jan
		beq.s	.NoDisplayElement

		lea	UChandelier_Obj1,a0
		move.w	#Under_EnemyVRam/32,d3
		jsr	Add_Simple_Sigel
.NoDisplayElement:
		movem.l	(sp)+,d0/d1/d4/d5/d7

.Change_LoopCounter:	*--*>Change Anf Element and LoopCounter
		jsr	.Koords_NextElement
		dbf	d7,.Check_Act_Element
		rts

*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Koords_NextElement	*--*>Koords fr nchstes Element berechnen
		*--*>MAKE X
.Nach_Links		*--*>Move to left
		add.l	d4,d0
		add.l	d5,d1
		rts

**************************************************************************************
Make_Schwank	*--*>KronOffset testen
		tst.b	Mover_Kron_Dir(a4)
		bpl.s	.Test_To_Big
.Test_To_Small	*--*>Test if Offset is under zero
		tst	Mover_Kron_Offset(a4)
		bpl.s	.Offset_OK
		*--*>Reset Offset and Values
		clr.w	Mover_Kron_Speed(a4)
		clr.w	Mover_Kron_Rest(a4)
		clr.w	Mover_Kron_Offset(a4)
		move.b	#1,Mover_Kron_Dir(a4)
		bclr.b	#LEFT_BIT,Mover_XY_Dirs(a4)
		bset.b	#RIGHT_BIT,Mover_XY_Dirs(a4)
		move.b	Mover_Kron_Acce(a4),Mover_Kron_Brems(a4)
		bra.s	.Offset_OK
.Test_To_Big	*--*>Test if Offset is to Big To use
		cmp	#69*2,Mover_Kron_Offset(a4)
		blo.s	.Offset_OK
		*--*>Reset Offset and Values
		clr.w	Mover_Kron_Speed(a4)
		clr.w	Mover_Kron_Rest(a4)
		move.w	#69*2-1,Mover_Kron_Offset(a4)
		move.b	#-1,Mover_Kron_Dir(a4)
		bclr.b	#RIGHT_BIT,Mover_XY_Dirs(a4)
		bset.b	#LEFT_BIT,Mover_XY_Dirs(a4)
		move.b	Mover_Kron_Acce(a4),Mover_Kron_Brems(a4)
		;bra.s	.Offset_OK
.Offset_OK		*--*>Make Offsets
		move	Mover_Kron_Offset(a4),d0
		lea	Kron_Schwank_Tab_X,a0
		lea	Kron_Schwank_Tab_Y,a1
		move.b	(a0,d0),d1
		move.b	(a1,d0),d2
		ext.w	d1
		ext.w	d2
		move	d1,Bob_X_Offset(a4)
		move	d2,Bob_Y_Offset(a4)
		*--*>Make Temet Speeds
		move	Mover_Old_X(a4),d3
		move	Mover_Old_Y(a4),d4
		sub	Bob_X_Offset(a4),d3
		bpl.s	.NoPosX
		neg	d3
.NoPosX		sub	Bob_Y_Offset(a4),d4
		bpl.s	.NoPosY
		neg	d4
.NoPosY		move	Bob_X_Offset(a4),Mover_Old_X(a4)
		move	Bob_Y_Offset(a4),Mover_Old_Y(a4)
		move.b	d3,Move_X_Speed(a4)
		move.b	d4,Move_Y_Speed(a4)
		*--*>Make Speeds
		tst.b	Mover_Kron_Dir(a4)
		bpl.s	.Nach_Rechts
.Nach_Links		*--*>Kronleuchter schwingt nach Links
		tst	d1
		bpl.s	.Beschl_Kron
		bra.s	.Brems_Kron
.Nach_Rechts	*--*>Kronleuchter schwingt nach rechts
		tst	d1
		bmi.s	.Beschl_Kron
		bra.s	.Brems_Kron
.Beschl_Kron	*--*>BESCHLEUNIGEN
		bclr.b	#UP_BIT,Mover_XY_Dirs(a4)
		bset.b	#DOWN_BIT,Mover_XY_Dirs(a4)
		moveq	#0,d2
		move.b	Mover_Kron_Acce(a4),d2
		add	d2,Mover_Kron_Speed(a4)
		move.b	Mover_Kron_Speed+1(a4),d2
		add	d2,Mover_Kron_Rest(a4)
		bra.s	.AddSpeed
.Brems_Kron		*--*>BREMSEN
		bclr.b	#DOWN_BIT,Mover_XY_Dirs(a4)
		bset.b	#UP_BIT,Mover_XY_Dirs(a4)
		moveq	#0,d2
		move.b	Mover_Kron_Brems(a4),d2
		sub	d2,Mover_Kron_Speed(a4)
		bmi.s	.Change_Dir
		move.b	Mover_Kron_Speed+1(a4),d2
		add	d2,Mover_Kron_Rest(a4)
		bra.s	.AddSpeed
.Change_Dir		*---*>Speed Neg ?
		neg.b	Mover_Kron_Dir(a4)
		clr.w	Mover_Kron_Speed(a4)
		clr.w	Mover_Kron_Rest(a4)
		tst.b	Mover_Kron_Dir(a4)
		bpl.s	.IRDirs
.ILDirs		bclr.b	#RIGHT_BIT,Mover_XY_Dirs(a4)
		bset.b	#LEFT_BIT,Mover_XY_Dirs(a4)
		rts
.IRDirs		bclr.b	#LEFT_BIT,Mover_XY_Dirs(a4)
		bset.b	#RIGHT_BIT,Mover_XY_Dirs(a4)
		rts
.AddSpeed		*---*>Add Speed to Offset
		tst.b	Mover_Kron_Dir(a4)
		bpl.s	.Add_Speed_to_Offs
.Sub_Speed_to_Offs	*--*>Nach Links
		moveq	#0,d2
		move.b	Mover_Kron_Speed(a4),d2
		sub	d2,Mover_Kron_Offset(a4)
		move.b	Mover_Kron_Rest(a4),d2
		sub	d2,Mover_Kron_Offset(a4)
		clr.b	Mover_Kron_Rest(a4)
		bra.s	.END_SCHWANK
.Add_Speed_to_Offs	*--*>Nach rechts
		moveq	#0,d2
		move.b	Mover_Kron_Speed(a4),d2
		add	d2,Mover_Kron_Offset(a4)
		move.b	Mover_Kron_Rest(a4),d2
		add	d2,Mover_Kron_Offset(a4)
		clr.b	Mover_Kron_Rest(a4)
		;bra.s	.END_SCHWANK

.END_SCHWANK	*--*>ENDE der Durchsage
		rts
*-------------------------------------------------------------------------------------
Kron_Schwank_Tab_X	dc.b	-68,-67,-66,-65,-64,-63,-62,-61,-60,-59
		dc.b	-58,-57,-56,-55,-54,-53,-52,-51,-50,-49
		dc.b	-48,-47,-46,-45,-44,-43,-42,-41,-40,-39
		dc.b	-38,-37,-36,-35,-34,-33,-32,-31,-30,-29
		dc.b	-28,-27,-26,-25,-24,-23,-22,-21,-20,-19
		dc.b	-18,-17,-16,-15,-14,-13,-12,-11,-10,-09
		dc.b	-08,-07,-06,-05,-04,-03,-02,-01,-00	;*** Left
		dc.b	+00,+01,+02,+03,+04,+05,+06,+07,+08	;*** Right
		dc.b	+09,+10,+11,+12,+13,+14,+15,+16,+17,+18
		dc.b	+19,+20,+21,+22,+23,+24,+25,+26,+27,+28
		dc.b	+29,+30,+31,+32,+33,+34,+35,+36,+37,+38
		dc.b	+39,+40,+41,+42,+43,+44,+45,+46,+47,+48
		dc.b	+49,+50,+51,+52,+53,+54,+55,+56,+57,+58
		dc.b	+59,+60,+61,+62,+63,+64,+65,+66,+67,+68
Kron_Schwank_Tab_Y	dc.b	+00,+01,+02,+03,+04,+05,+06,+07,+08,+09
		dc.b	+09,+10,+11,+12,+12,+13,+13,+14,+15,+15
		dc.b	+16,+16,+17,+17,+18,+18,+19,+19,+19,+20
		dc.b	+20,+21,+21,+21,+22,+22,+22,+23,+23,+23
		dc.b	+23,+24,+24,+24,+24,+25,+25,+25,+25,+25
		dc.b	+25,+26,+26,+26,+26,+26,+26,+26,+26,+27
		dc.b	+27,+27,+27,+27,+27,+27,+27,+27,+27	;*** Left
		dc.b	+27,+27,+27,+27,+27,+27,+27,+27,+27	;*** Right
		dc.b	+27,+26,+26,+26,+26,+26,+26,+26,+26,+25
		dc.b	+25,+25,+25,+25,+25,+24,+24,+24,+24,+23
		dc.b	+23,+23,+23,+22,+22,+22,+21,+21,+21,+20
		dc.b	+20,+19,+19,+19,+18,+18,+17,+17,+16,+16
		dc.b	+15,+15,+14,+13,+13,+12,+12,+11,+10,+09
		dc.b	+09,+08,+07,+06,+05,+04,+03,+02,+01,+00
**************************************************************************************
Search_Top_Pos:	*--*>Search Top Pos of Kette
		move	Bob_X_Position(a4),d0
		add	#32,d0
		move	d0,d4
		move	Bob_Y_Position(a4),d1
		sub	#16,d1
		and	#$fff0,d1
		move	d1,d5
.Loop		jsr	Get_Block_Flags
		swap	d0
		btst	#SCR_KOLLISION_BIT,d0
		bne	.Found_Decke
		sub	#16,d5
		move	d4,d0
		move	d5,d1
		bra.s	.Loop
.Found_Decke	*--*>Ergebnis in d4
		add	#16,d5
		move	d5,Kette_Y_Up_Pos(a4)
		rts
**************************************************************************************
Make_Move_Kette:	*---*>Handle Act KKette
		move	Kette_Y_Up_Pos(a4),d0
		move	Scr_Y_Level_Pos(a6),d1
		add	#224,d1
		cmp	d1,d0
		bhs	.KetteOff1

		*--*>Enter Hide Obj
		move	Bob_X_Position(a4),d0
		add	#24,d0
		move	Kette_Y_Up_Pos(a4),d1
		sub	#32,d1
		jsr	Check_Object_Borders_Jan
		beq.s	.NoDisplayHide
		lea	UDoor_Obj2,a0
		move.w	#Under_EnemyVRam/32,d3
		jsr	Add_Simple_Sigel
.NoDisplayHide
		move	Bob_X_Position(a4),d0
		add	#24,d0
		move	Bob_Y_Position(a4),d1
		sub	#32,d1
.KetteEnterLoop:	movem	d0-d1,-(sp)
		jsr	Check_Object_Borders_Jan
		beq.s	.TestKetteOut
		move.w	#Under_EnemyVRam/32,d3
		lea	UChain_Obj0,a0
		jsr	Add_Simple_Sigel
		movem	(sp)+,d0-d1
		cmp	Kette_Y_Up_Pos(a4),d1
		bls.s	.KetteOff1
.KetteNoEnd		sub	#32,d1
		bra.s	.KetteEnterLoop
.TestKetteOut	movem	(sp)+,d0-d1
		cmp	Scr_Y_Level_Pos(a6),d1
		bgt.s	.KetteNoEnd
.KetteOff1		rts

**************************************************************************************
*-------------------------------------------------------------------------------------
*--------------	GHOST
*-------------------------------------------------------------------------------------
*-------------------------------------------------------------------------------------
Ghost_Anm:		dc.w	0
		dc.l	UGhost_Obj0
		dc.w	0,0
		dc.w	1
		dc.l	UGhost_Obj0
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	Ghost_Anm
*-------------------------------------------------------------------------------------
Ghost_Rout_Time	=Bob_Special_1	;B
Ghost_Blink_Time	=Bob_Special_1+1	;B
Ghost_Offset	=Bob_Special_2	;W
Ghost_Start_X	=Bob_Special_3	;W
Ghost_Start_Y	=Bob_Special_4	;W
Ghost_Blink_Counter	=Bob_Koords_Save2+2	;B
Ghost_Wait_Time	=Bob_Koords_Save2+3	;B
Ghost_X_Speed	=Bob_Koords_Save1	;W
Ghost_Y_Speed	=Bob_Koords_Save1+2	;W
Ghost_Y_Acce	=Bob_Koords_Save2	;W
*-------------------------------------------------------------------------------------
Ghost_Choose_Rout_I	*--*>Write Koords
		move.w	#220,Bob_Out_X_Val(a4)
		move.w	#220+32,Bob_Out_Y_Val(a4)
		move	Bob_X_Position(a4),Ghost_Start_X(a4)
		move	Bob_Y_Position(a4),Ghost_Start_Y(a4)
		move.l	#Ghost_Choose_Rout,Bob_Routine(a4)
*-------------------------------------------------------------------------------------
Ghost_Choose_Rout	*--*>Chose which Rout
		move.b	#60,Ghost_Wait_Time(a4)
		jsr	Make_Zuffis
		rts
*---------------------------------------------------------------------------
Ghost_Move_Rout	*--*>Move Ghost
		tst.b	Ghost_Wait_Time(a4)
		beq.s	.Normal_Move_Rout
		subq.b	#1,Ghost_Wait_Time(a4)
		bne.s	.End_Move
.Normal_Move_Rout	*--*>Standart_Routs
		jsr	Standart_BobAnim
		jsr	Test_Bob_Out
		subq.b	#1,Ghost_Rout_Time(a4)
		jsr	Make_Blink_Ghost

		move	Ghost_X_Speed(a4),d0
		add	d0,Bob_X_Position(a4)
		move	Ghost_Y_Acce(a4),d0
		add	d0,Ghost_Y_Speed(a4)
		move.b	Ghost_Y_Speed(a4),d0
		ext.w	d0
		add	d0,Bob_Y_Position(a4)

		jsr	Test_TEMET_Hit

		tst.b	Ghost_Blink_Time(a4)
		bne.s	.End_Move
		cmp.b	#20,Ghost_Rout_Time(a4)
		blo.s	.End_Move
		jsr	Test_TIMET_Hit_Bob

.End_Move		rts
*---------------------------------------------------------------------------
Ghost_Up_Rout	*--*>Kommt aus Kiste und fliegt schnell nach oben
		jsr	Standart_BobAnim
		jsr	Test_Bob_Out
		subq.b	#1,Ghost_Rout_Time(a4)
		jsr	Make_Blink_Ghost
		jsr	Go_UP

		jsr	Test_TEMET_Hit

		tst.b	Ghost_Blink_Time(a4)
		bne.s	.End_UP
		cmp.b	#20,Ghost_Rout_Time(a4)
		blo.s	.End_UP
		jsr	Test_TIMET_Hit_Bob

.End_UP		rts
*---------------------------------------------------------------------------
*---------------------------------------------------------------------------
Test_TIMET_Hit_Bob	*--*>Test Kollision
		lea	WorkRam,a2
		jsr	KollTopBobTest
		tst	d7
		bmi 	.NoKollFl
		;--Kollision On
		jsr	Make_Bump
		*--*>out Huhn
		moveq	#8,d3
		moveq	#12,d4
		jsr	ENTER_SMOKE_X_Offs
		moveq	#8,d3
		moveq	#4,d4
		jsr	ENTER_SMOKE_Y_Offs
		jsr	Out_Bob_Damage
		IFEQ	SOUNDFX
		moveq	#9,d0
		jsr	TFMX+16
		ENDC
.NoKollFl		rts
*---------------------------------------------------------------------------
Make_Zuffis		*--*>Make Rout Time
		tst.b	Ghost_Rout_Time(a4)
		bne.s	.Make_X_Y_Pos
		jsr	Get_Zuffi_d2
		and	#3,d2
		lsl	#5,d2
		add	#100,d2
		move.b	d2,Ghost_Rout_Time(a4)
		move.b	#30,Ghost_Blink_Time(a4)
		IFEQ	SOUNDFX
		moveq	#35,d0
		jsr	TFMX+16
		ENDC
		rts
.Make_X_Y_Pos	*--*>make XY Pos
		jsr	Get_Zuffi_d2
		and	#7,d2
		add	d2,d2
		add	d2,d2
		lea	Ghost_XY_Offsets,a0
		add	d2,a0
		move	Ghost_Start_X(a4),Bob_X_Position(a4)
		move	Ghost_Start_Y(a4),Bob_Y_Position(a4)
		move	(a0),d0
		add	d0,Bob_X_Position(a4)
		move	2(a0),d0
		add	d0,Bob_Y_Position(a4)
		*--*>Make_XY_Speeds
		lea	WorkRam,a2
		move	TEMET_X_Position(a2),d0
		sub	Bob_X_Position(a4),d0
		tst	d0
		bpl.s	.Ghost_Left
.Ghost_Right	*--*>Ghost is Right
		neg	d0
		move	#$ffff,Ghost_X_Speed(a4)
		cmp	#60,d0
		blo.s	.Make_Y_Speed
		move	#$fffe,Ghost_X_Speed(a4)
		bra.s	.Make_Y_Speed
.Ghost_Left		*--*>Ghost is Left
		move	#$1,Ghost_X_Speed(a4)
		cmp	#60,d0
		blo.s	.Make_Y_Speed
		move	#$2,Ghost_X_Speed(a4)
		;bra.s	.Make_Y_Speed
.Make_Y_Speed	*--*>Y Speed
		move	TEMET_Y_Position(a2),d0
		sub	Bob_Y_Position(a4),d0
		tst	d0
		bpl.s	.Ghost_Up
.Ghost_Down		*--*>Ghost is Down
		neg	d0
		move	#$fe00,Ghost_Y_Speed(a4)
		move	#$0008,Ghost_Y_Acce(a4)
		cmp	#60,d0
		blo.s	.Make_Rout
		move	#$fd00,Ghost_Y_Speed(a4)
		move	#$000c,Ghost_Y_Acce(a4)
		bra.s	.Make_Rout
.Ghost_Up		*--*>Ghost is Up
		move	#$0200,Ghost_Y_Speed(a4)
		move	#$0-$0008,Ghost_Y_Acce(a4)
		cmp	#60,d0
		blo.s	.Make_Rout
		move	#$0300,Ghost_Y_Speed(a4)
		move	#$0-$000c,Ghost_Y_Acce(a4)
		;bra.s	.Make_Rout
.Make_Rout		*--*>Init Rout
		move.l	#Ghost_Move_Rout,Bob_Routine(a4)
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Ghost_XY_Offsets	dc.w	+20,-80
		dc.w	+56,+56
		dc.w	-32,-56
		dc.w	0,0
		dc.w	-80,-16
		dc.w	-40,+56
		dc.w	+72,-32
		dc.w	+16,+80
*---------------------------------------------------------------------------
Go_UP		*--*>Go_Up and schwank X
		subq	#3,Bob_Y_Position(a4)
.Go_UP		lea	Ghost_X_Tab,a0
		add	Ghost_Offset(a4),a0
		move.b	(a0),d0

		cmp.b	#GHOSTTABEND/4,d0
		bne.s	.NOFXPLAY
		nop
		IFEQ	SOUNDFX
		moveq	#35,d0
		jsr	TFMX+16
		ENDC

.NOFXPLAY		cmp.b	#GHOSTTABEND,d0
		bne.s	.OkNormal
		*--*>Reset Offset
		clr.w	Ghost_Offset(a4)
		bra.s	.Go_UP
.OkNormal		*--*>Normal X
		addq	#1,Ghost_Offset(a4)
		ext.w	d0
		add	d0,Bob_X_Position(a4)
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GHOSTTABEND	=100
Ghost_X_Tab		dc.b	+1,0,0,0,+1,0,0,0,0,+1,0,0,0,0,0,0,+1,0,0,0,0,0,0,0,0
		dc.b	-1,0,0,0,0,0,0,-1,0,0,0,0,-1,0,0,0,-1,0,0,0
		dc.b	-1,0,0,0,-1,0,0,0,0,-1,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0
		dc.b	+1,0,0,0,0,0,0,+1,0,0,0,0,+1,0,0,0,+1,0,0,0
		dc.b	GHOSTTABEND
		even
*---------------------------------------------------------------------------
Make_Blink_Ghost	*--*>Add Blinker
		addq.b	#1,Ghost_Blink_Counter(a4)
		*--*>Test Blink Time and make Blink
		cmp.b	#30,Ghost_Rout_Time(a4)
		bhs.s	.NormalTestBlink
		tst.b	Ghost_Rout_Time(a4)
		bne.s	.RoutTimeBlinkTest
		move.l	#Ghost_Choose_Rout,Bob_Routine(a4)
		rts
.RoutTimeBlinkTest	*--*>End of Rout Time !   Weg Blink !
		cmp.b	#15,Ghost_Rout_Time(a4)
		bhs.s	.TestMask
		bra.s	.TestBlink

.NormalTestBlink	tst.b	Ghost_Blink_Time(a4)
		beq.s	.Normal
		*--*>Blink or not
		subq.b	#1,Ghost_Blink_Time(a4)
		cmp.b	#15,Ghost_Blink_Time(a4)
		blo.s	.TestMask

.TestBlink		move.b	Ghost_Blink_Counter(a4),d0
		and.b	#3,d0
		beq.s	.Normal
		bra.s	.Mask

.TestMask		*--*>Test Ein frame weg
		move.b	Ghost_Blink_Counter(a4),d0
		and.b	#1,d0
		beq.s	.Mask
.Normal		*--*>Narmal Bob
		jsr	Show_UnderObject
.Mask		rts
*---------------------------------------------------------------------------
**************************************************************************************
*-------------------------------------------------------------------------------------
*-------------	BOX UNDER
*-------------------------------------------------------------------------
Box_Wait_Anm:
UBox_Anm:		dc.w	0
		dc.l	UChest_Obj0,$3
		dc.w	ENTRY_END
		dc.l	UBox_Anm
*-------------------------------------------------------------------------
UBox_Dam_Anm:	dc.w	0
		dc.l	UChest_Obj7,29-17+5
		dc.w	ENTRY_END
		dc.l	UBox_Dam_Anm
*-------------------------------------------------------------------------------------
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Box_Gem_Rout_WU:	*--*>Rout Initialisieren
		move.l	#Box_Gem_Rout,Bob_Routine(a4)
		move.l	#UBox_Dam_Anm,Box_Damage_Anm(a4)
		move.l	#Enter_TheGemsen,Box_Damage_EnterRout1(a4)
		move.l	#RoutRts,Box_Damage_EnterRout2(a4)
		move.l	#Show_UnderObject,Box_Show_Rout(a4)
		move.l	#UBOX_Dam_Tab,Box_DamTab_Adr(a4)
		rts
*-------------------------------------------------------------------------------------
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UBOX_Dam_Tab	dc.l	UBox_Left,UBox_Right
UBox_Left		*--*>box 1
		dc.w	-16,4
		dc.l	UBox_Dam_L_Anm	***!!!
		dc.w	45
		dc.b	-1,0
		dc.w	$fd00,$0018,$fc00,$0048
UBox_Right		*--*>box 2
		dc.w	16,4
		dc.l	UBox_Dam_R_Anm	***!!!
		dc.w	45
		dc.b	1,0
		dc.w	$0300,0-$0018,$fc00,$0048
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UBox_Dam_L_Anm:	dc.w	0
		dc.l	UChest_Obj8,0
		dc.w	ENTRY_END
		dc.l	UBox_Dam_L_Anm
UBox_Dam_R_Anm:	dc.w	1
		dc.l	UChest_Obj8,0
		dc.w	ENTRY_END
		dc.l	UBox_Dam_R_Anm
*-------------------------------------------------------------------------------------
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

*-------------------------------------------------------------------------------------
*---------------	BOX GHOST
*-------------------------------------------------------------------------------------
Box_Gem_Rout_GU:	*--*>Rout Initialisieren
		move.l	#Box_Gem_Rout,Bob_Routine(a4)
		move.l	#UBox_Dam_Anm,Box_Damage_Anm(a4)
		move.l	#Enter_Ghosten,Box_Damage_EnterRout1(a4)
		move.l	#RoutRts,Box_Damage_EnterRout2(a4)
		move.l	#Show_UnderObject,Box_Show_Rout(a4)
		move.l	#UBOX_Dam_Tab,Box_DamTab_Adr(a4)
		rts
*-------------------------------------------------------------------------------------
**************************************************************************************
*-------------------------------------------------------------------------------------
*---------------	BOX HUHN
*-------------------------------------------------------------------------------------
*---------------------------------------------------------------------------
BoxH_Jump		=Bob_Special_1	;B
BoxH_Time_Before_J	=Bob_Special_1+1	;B
BoxH_Time_After_J	=Bob_Special_1+1	;B
BoxH_Y_Acce		=Bob_Special_4	;W
BoxH_X_Speed	=Bob_Koords_Save1	;W
BoxH_Y_Speed	=Bob_Koords_Save1+2	;W
*---------------------------------------------------------------------------
Jump_Box_Rout	*--Standart Routs
		jsr	Test_Bob_Out
		jsr	BoxH_Test_Jump
		jsr	Standart_BobAnim
		jsr	Test_TEMET_Hit
		jsr	Show_UnderObject
		*--*>Test ob Temet auf Kiste gesprungen ist
		lea	WorkRam,a2
		jsr	KollTopBobTest
		tst	d7
		bmi	.NoKoll
		*--Kollision ! Konvert Huhn
		lea	WorkRam,a2
		jsr	Make_Bump
		moveq	#8,d3
		moveq	#0,d4
		jsr	ENTER_SMOKE_X_Offs
		moveq	#8,d3
		moveq	#0,d4
		jsr	ENTER_SMOKE_Y_Offs
		IFEQ	SOUNDFX
		moveq	#9,d0
		jsr	TFMX+16
		ENDC
		*--*>Enter Huhn and BoX
		move.b	#BOB_FALSE,Bob_Used(a4)
		*--*>Enter Box Again
		move	#S_BOX_HUHN,d0
		sub	#16,Bob_X_Position(a4)
		move	Bob_X_Position(a4),d1
		move	Bob_Y_Position(a4),d2	
		move.l	Bob_Entry_Adress(a4),a1
		move	BoxH_X_Speed(a4),d7
		jsr	Search_Bob_Entry
		tst	d0
		bmi	.NoKoll
		move.w	#220,Bob_Out_X_Val(a4)
		move.w	#220+32,Bob_Out_Y_Val(a4)

		move	d7,BoxH_X_Speed(a4)
		move	#$0000,BoxH_Y_Speed(a4)
		move	#BOXH_ACCE_P,BoxH_Y_Acce(a4)
		move.l	#Box_Open_Huhn,Bob_Routine(a4)
	move.l	#UBox_HAnm,Bob_Next_Anim(a4)
	;move.l	#Box_Open_Anm,Bob_Next_Anim(a4)
		move	#8,Bob_Anim_Delay_Init(a4)
		move.b	#-1,BoxH_Huhn_Out_Offs(a4)
		move.b	#30,BoxH_Time_Force_Dir(a4)
		move.l	a4,a5
		;*--*>Enter Huhn for Box
		move	#S_HUHN_RIGHT,d0
		move	Bob_X_Position(a4),d1
		subq	#8,d1
		move	Bob_Y_Position(a4),d2	
		subq	#3,d2
		add	#16,d2
		lea	Area_Enter_Vector(a6),a1
		jsr	Search_Bob_Entry
		tst	d0
		bmi.s	.Out_Box
		move.l	#RoutRts,Bob_Routine(a4)
		move	#2,Bob_Anim_Delay_Init(a4)
		move.l	a4,BoxH_Huhn_Adr(a5)
		tst	BoxH_X_Speed(a5)
		bpl.s	.InitMumieR
.InitMumieL	move.l	#UHuhn_Mumie_Left1,Bob_Next_Anim(a4)
		jsr	Get_Next_Bob_Frame
		rts
.InitMumieR	move.l	#UHuhn_Mumie_Right1,Bob_Next_Anim(a4)
		jsr	Get_Next_Bob_Frame
		rts
.Out_Box		*--*>Box Austragen
		move.b	#BOB_FALSE,Bob_Used(a5)
		rts
.NoKoll		*--*>No Kollision
		rts
*-------------------------------------------------------------------------------------
BoxH_Test_Jump	*--*> test if Bumper is Jumping
		tst.b	BoxH_Jump(a4)
		beq	.Test_if_Jump
		*--*> Continue Jump
		tst.b	BoxH_Time_Before_J(a4)
		beq.s	.Make_Jump
		subq.b	#1,BoxH_Time_Before_J(a4)
		bra	.End_Jump
.Make_Jump		move	BoxH_X_Speed(a4),d0
		add	d0,Bob_X_Position(a4)
		move	BoxH_Y_Acce(a4),d0
		add	d0,BoxH_Y_Speed(a4)
		move.b	BoxH_Y_Speed(a4),d0
		ext.w	d0
		add	d0,Bob_Y_Position(a4)
		*- ->Test X Koll
		jsr	Test_BoxH_XKoll
		tst	d7
		bpl.s	.Test_Y
		neg	BoxH_X_Speed(a4)
		move	BoxH_X_Speed(a4),d0
		add	d0,Bob_X_Position(a4)
.Test_Y		*- ->Test if Ground is there
		tst.b	BoxH_Y_Speed(a4)
		bpl.s	.Test_Y_Ground
		*--*>Test Y Kollision !
		move	Bob_X_Position(a4),d0
		add	#24,d0
		move	Bob_Y_Position(a4),d1
		jsr	Get_Block_Flags
		swap	d0
		btst	#SCR_KOLLISION_BIT,d0
		beq	.End_Jump
		*--*>Y Up Kollision
		clr.w	BoxH_Y_Speed(a4)
		moveq	#8,d3
		moveq	#-4,d4
		jsr	ENTER_SMOKE_X_Offs
		IFEQ	SOUNDFX
		moveq	#10,d0
		jsr	TFMX+16
		ENDC
		bra	.End_Jump
.Test_Y_Ground	*--*>Test Ground
		move	Bob_X_Position(a4),d0
		add	#24,d0
		move	Bob_Y_Position(a4),d1
		add	#32,d1
		jsr	Get_Block_Icon
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#boden,Block_Through(a1)
		beq.s	.MakeBoden
		cmp.b	#swand,Block_Through(a1)
		beq.s	.MakeBoden
		bra.s	.End_Jump
		*--*>Init End Jump Anim
.MakeBoden		and	#$fff0,Bob_Y_Position(a4)
		move.l	#Box_End_Jump_Anm,Bob_Next_Anim(a4)
		clr.b	BoxH_Jump(a4)
		move.b	#40,BoxH_Time_After_J(a4)
		move	#4,Bob_Anim_Delay_Init(a4)
		clr.w	Bob_Anim_Delay(a4)
		cmp.b	#4,BoxH_Y_Speed(a4)
		blo.s	.End_Jump
		moveq	#8,d3
		moveq	#0,d4
		jsr	ENTER_SMOKE_X_Offs
		IFEQ	SOUNDFX
		moveq	#3,d0
		jsr	TFMX+16
		ENDC
.End_Jump		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Test_if_Jump	*--*> test if TIMET is in Range
		tst.b	BoxH_Time_After_J(a4)
		beq.s	.Test_Now
		subq.b	#1,BoxH_Time_After_J(a4)
.Test_Now		*--*>Test if Timet is in Right range
		lea	WorkRam,a2
		move	TEMET_Y_Position(a2),d0
		add	#24,d0
		sub	Bob_Y_Position(a4),d0
		bpl.s	.OkYPos
		neg	d0
.OkYPos		cmp	#100,d0
		bhs	.NoJump
		move	TEMET_X_Position(a2),d0
		add	#16,d0
		sub	Bob_X_Position(a4),d0
		sub	#24,d0
		bmi.s	.BoxH_Right
.BoxH_Left		*--*> BoxH is Left
		cmp	#140,d0
		bhs	.NoJump
		tst	TEMET_Anim_Dir(a2)
		bmi.s	.Test_I_Wank_BigJL
		cmp	#70,d0
		blo	.Init_Flach_Jump_R
		bra	.Init_Little_Jump_R
		rts
.Test_I_Wank_BigJL	*->Test big Jump or Wank
		cmp	#110,d0
		bhs	.NoJump
		cmp	#75,d0
		blo.s	.Init_Big_Jump_R
		cmp	#95,d0
		blo.s	.NoJump
		bra	.Init_Wank
.BoxH_Right	*--*>Bumper is Right
		neg	d0
		cmp	#140,d0
		bhs.s	.NoJump
		tst	TEMET_Anim_Dir(a2)
		bpl.s	.Test_I_Wank_BigJR
		cmp	#70,d0
		blo	.Init_Flach_Jump_L
		bra	.Init_Little_Jump_L
.Test_I_Wank_BigJR	*->Test big Jump or Wank
		cmp	#110,d0
		bhs	.NoJump
		cmp	#75,d0
		blo.s	.Init_Big_Jump_L
		cmp	#95,d0
		blo.s	.NoJump
		bra	.Init_Wank
.NoJump		*--*>kein Jump mglich oder kein Jump ntig
		rts
*-------------------------------------------------------------------------------------
.Init_Big_Jump_L	*--*>Nach links hoppeln
		move	#-1,BoxH_X_Speed(a4)
		bra.s	.Init_Big_Jump_G
.Init_Big_Jump_R	*--*>Nach links hoppeln
		move	#1,BoxH_X_Speed(a4)
.Init_Big_Jump_G	move.l	#Box_Jump_Anm,Bob_Next_Anim(a4)
		move.b	#1,BoxH_Jump(a4)
		move.b	#06,BoxH_Time_Before_J(a4)
		move	#1,Bob_Anim_Delay_Init(a4)
		clr.w	Bob_Anim_Delay(a4)
		move	#$fa00,BoxH_Y_Speed(a4)
		move	#$0040,BoxH_Y_Acce(a4)
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Init_Flach_Jump_L	*--*>Nach links hoppeln
		tst.b	BoxH_Time_After_J(a4)
		bne.s	.IFJL_NO
		move	#-2,BoxH_X_Speed(a4)
		bra.s	.Init_Flach_Jump_G
.Init_Flach_Jump_R	*--*>Nach links hoppeln
		tst.b	BoxH_Time_After_J(a4)
		bne.s	.IFJL_NO
		move	#2,BoxH_X_Speed(a4)
.Init_Flach_Jump_G	move.l	#Box_Jump_Anm,Bob_Next_Anim(a4)
		move.b	#1,BoxH_Jump(a4)
		move.b	#15,BoxH_Time_Before_J(a4)
		move	#2,Bob_Anim_Delay_Init(a4)
		clr.w	Bob_Anim_Delay(a4)
		move	#$fc00,BoxH_Y_Speed(a4)
		move	#$0040,BoxH_Y_Acce(a4)
.IFJL_NO		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Init_Little_Jump_L
		*--*>Nach links hoppeln
		tst.b	BoxH_Time_After_J(a4)
		bne.s	.ILJL_NO
		move	#-1,BoxH_X_Speed(a4)
		bra.s	.Init_Little_Jump_G
.Init_Little_Jump_R
		*--*>Nach links hoppeln
		tst.b	BoxH_Time_After_J(a4)
		bne.s	.ILJL_NO
		move	#1,BoxH_X_Speed(a4)

.Init_Little_Jump_G	move.l	#Box_Jump_Anm,Bob_Next_Anim(a4)
		move.b	#1,BoxH_Jump(a4)
		move.b	#15,BoxH_Time_Before_J(a4)
		move	#2,Bob_Anim_Delay_Init(a4)
		clr.w	Bob_Anim_Delay(a4)
		move	#$fe00,BoxH_Y_Speed(a4)
		move	#$0040,BoxH_Y_Acce(a4)
.ILJL_NO		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Init_Wank
		*--*>Wanken initialisieren
		tst.b	BoxH_Time_After_J(a4)
		bne.s	.IW_NO
		move.l	#Box_Wank_Anm,Bob_Next_Anim(a4)
		move.b	#1,BoxH_Jump(a4)
		move.b	#00,BoxH_Time_Before_J(a4)
		move	#4,Bob_Anim_Delay_Init(a4)
		clr.w	Bob_Anim_Delay(a4)
		move	#0,BoxH_X_Speed(a4)
		move	#$0000,BoxH_Y_Speed(a4)
		move	#$0000,BoxH_Y_Acce(a4)
.IW_NO		rts
*---------------------------------------------------------------------------
Test_BoxH_XKoll	moveq	#0,d7	;NoKollision
		;Calculate LevelAdr
		move	Bob_X_Position(a4),d0
		move	Bob_Y_Position(a4),d1
		add	#16,d1
		tst	BoxH_X_Speed(a4)
		bmi.s	.LeftXK
		add	Bob_Width(a4),d0
.LeftXK		jsr	Get_Block_Flags
		swap	d0
		*--*>Test auf X Kolli
		btst	#SCR_KOLLISION_BIT,d0
		beq.s	.NoXKolli
		*-->X-Kollision
		moveq	#-8,d3
		moveq	#0,d4
		jsr	ENTER_SMOKE_Y_Offs
		moveq	#-1,d7
		IFEQ	SOUNDFX
		moveq	#10,d0
		jsr	TFMX+16
		ENDC
.NoXKolli		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Box_Jump_Anm:	dc.w	0
		dc.l	UChest_Obj0,$3
		dc.w	0
		dc.l	UChest_Obj1,$4
		dc.w	0
		dc.l	UChest_Obj2,$5
		dc.w	0
		dc.l	UChest_Obj3,$6
		dc.w	0
		dc.l	UChest_Obj1,$4
		dc.w	0
		dc.l	UChest_Obj0,$3
		dc.w	0
		dc.l	UChest_Obj0,$3
		dc.w	0
		dc.l	UChest_Obj1,$4
		dc.w	0
		dc.l	UChest_Obj1,$4
		dc.w	0
		dc.l	UChest_Obj1,$4
Box_Jump_Cnt:	dc.w	0
		dc.l	UChest_Obj0,$3
		dc.w	ENTRY_END
		dc.l	Box_Jump_Cnt
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Box_Wank_Anm:
Box_End_Jump_Anm:
		dc.w	0
		dc.l	UChest_Obj1,$4
		dc.w	0
		dc.l	UChest_Obj2,$5
		dc.w	0
		dc.l	UChest_Obj2,$5
		dc.w	0
		dc.l	UChest_Obj1,$4
		dc.w	ENTRY_END
		dc.l	Box_Wait_Anm
*---------------------------------------------------------------------------
******BOXFLY
**************************************************************************************
BoxH_Time_Open		=Bob_Special_1	;B
BoxH_Time_Force_Dir	=Bob_Special_1+1	;B
BoxH_Fall_Down		=Bob_Special_2	;B
BoxH_Huhn_Out_Offs	=Bob_Special_2+1	;B
BoxH_Force_Dead		=Bob_Special_3	;B
BoxH_Huhn_Adr		=Bob_Koords_Save2	;LW
*---------------------------------------------------------------------------
BOXH_ACCE_N	=$0-$0030
BOXH_ACCE_P	=$0030
*---------------------------------------------------------------------------
Box_System_Show_Rout	*---*>Show Da Box
		move	Bob_X_Position(a4),d0
		move	Bob_Y_Position(a4),d1
		add	#13,d1
		jsr	Check_Object_Borders_Jan
		beq.s	.NoDisplayBox
		move.w	#Under_EnemyVRam/32,d3
		lea	UChest_Obj10,a0
		jsr	Add_Simple_Sigel
.NoDisplayBox
		move	Bob_X_Position(a4),Bob_X_Position(a5)
		addq	#8,Bob_X_Position(a5)
		move	Bob_Y_Position(a4),Bob_Y_Position(a5)
		add	#13,Bob_Y_Position(a5)

		move.l	a4,-(sp)
		move.l	BoxH_Huhn_Adr(a4),a4
		jsr	Show_UnderObject
		move.l	(sp)+,a4

		cmp.b	#40,BoxH_Time_Open(a4)
		beq.s	.NoAdd
		addq.b	#1,BoxH_Time_Open(a4)

.NoAdd		move	Bob_X_Position(a4),d0
		move	Bob_Y_Position(a4),d1
		jsr	Check_Object_Borders_Jan
		beq.s	.NoDisplayBox1
		move.w	#Under_EnemyVRam/32,d3

		cmp.b	#40,BoxH_Time_Open(a4)
		beq.s	.OpenChest
		cmp.b	#20,BoxH_Time_Open(a4)
		bhi.s	.MakeOpen2

		sub	#4,d1
		lea	UChest_Obj4,a0
		bra.s	.AdddatSiegel
.MakeOpen2	sub	#7,d1
		lea	UChest_Obj5,a0
		bra.s	.AdddatSiegel
.OpenChest	sub	#9,d1
		lea	UChest_Obj6,a0

.AdddatSiegel	jsr	Add_Simple_Sigel
.NoDisplayBox1	move.l	BoxH_Huhn_Adr(a4),a5
		rts
*---------------------------------------------------------------------------
Standart_HuhnAnim:
		move	Bob_Y_Offset(a4),-(sp)
		jsr	Standart_BobAnim
		move	(sp)+,Bob_Y_Offset(a4)
		rts
*---------------------------------------------------------------------------
Box_Open_Huhn	*--*>Routine Fall Down / Open Box Huhn Out
		move.l	BoxH_Huhn_Adr(a4),a5

		*--*>test if out Range
		jsr	Test_Bob_Out
		cmp.b	#BOB_FALSE,Bob_Used(a4)
		bne.s	.NoOut_Huhn
		*--*>out Huhn
		move.b	#BOB_FALSE,Bob_Used(a5)
		rts
.NoOut_Huhn	*--*>Other Routs

		cmp.b	#-1,BoxH_Huhn_Out_Offs(a4)
		bne.s	.Make_Huhn_Out
		jsr	.Test_Huhn_Come_Out
		bra.s	.First_Routs
.Make_Huhn_Out	*--*>Huhn already Out ?
		cmp.b	#-2,BoxH_Huhn_Out_Offs(a4)
		beq.s	.First_Routs
		*--*>Huhn_Come_Out
		lea	Huhn_Out_Tab,a0
		moveq	#0,d0
		moveq	#0,d2
		move.b	BoxH_Huhn_Out_Offs(a4),d0
		cmp.b	#ENDE_TAB,(a0,d0)
		beq.s	.Init_Out_Ende
		move.b	(a0,d0),d1
		addq.b	#1,BoxH_Huhn_Out_Offs(a4)
		ext.w	d1
		move	d1,Bob_Y_Offset(a5)
		bra.s	.First_Routs
.Init_Out_Ende	move.b	#-2,BoxH_Huhn_Out_Offs(a4)
		move.l	#Standart_HuhnAnim,Bob_Routine(a5)
.First_Routs	*--*>Test if ShoHuhn Out
		jsr	Box_System_Show_Rout
		jsr	Standart_BobAnim
		tst.b	BoxH_Fall_Down(a4)
		bne.s	.NoHitTIMEt
		jsr	Test_TEMET_Hit
		jsr	.Make_Move
		jsr	.Test_TIMET_Hit_Box
.NoHitTIMEt
		jsr	Test_Fall_Down
		tst.b	BoxH_Force_Dead(a4)
		beq.s	.NothingDead
		move.b	#BOB_FALSE,Bob_Used(a4)
		move.b	#BOB_FALSE,Bob_Used(a5)
.NothingDead	rts
*---------------------------------------------------------------------------
.Make_Move	*---*>Make Move X und Y
		*--> X First
		tst.b	BoxH_Time_Force_Dir(a4)
		beq.s	.Normal_X_Move
		subq.b	#1,BoxH_Time_Force_Dir(a4)
		bra.s	.X_Move
.Normal_X_Move	*--*>Decide Dir and Move
		jsr	.Decide_X_Dir
.X_Move		*--*>Move X
		move	BoxH_X_Speed(a4),d0
		add	d0,Bob_X_Position(a4)
		add	d0,Bob_X_Position(a5)
		jsr	Test_BoxH_XKoll
		tst	d7
		bpl.s	.Make_Move_Y
		neg	BoxH_X_Speed(a4)
		move.b	#50,BoxH_Time_Force_Dir(a4)
		jsr	.Make_Huhn_Dirs
.Make_Move_Y	*--*>Y Moven 
		lea	WorkRam,a2
		move	TEMET_Y_Position(a2),d0
		sub	Bob_Y_Position(a4),d0
		bmi.s	.Move_Up
		cmp	#80,d0
		bhs.s	.Move_Down
		cmp	#40,d0
		blo.s	.Move_Up
		*--*>Range Ok test Fall Down
		lea	WorkRam,a2
		move	TEMET_X_Position(a2),d0
		add	#16,d0
		sub	Bob_X_Position(a4),d0
		sub	#24,d0
		bpl.s	.RangePos
		neg	d0
.RangePos	cmp	#1,d0
		bhs.s	.Move_Y_Cnt
		tst.b	Akt_Copper_Frame(a6)
		beq.s	.Move_Y_Cnt
		***-->INIT FALL DOWN
		IFEQ	SOUNDFX
		moveq	#2,d0
		jsr	TFMX+16
		ENDC
		;move.l	#Box_Close_Anm,Bob_Next_Anim(a4)
		move.l	#BoxH_Fall_Down_Rout,Bob_Routine(a4)
		;move.l	#RoutRts,Bob_Routine(a5)
		move.b	#1,BoxH_Fall_Down(a4)
		move	#$0000,BoxH_Y_Speed(a4)
		clr.b	BoxH_Huhn_Out_Offs(a4)
		move	#1,Bob_Anim_Delay_Init(a4)
		bra.s	.Move_Y_Cnt
.Move_Up	subq	#1,Bob_Y_Position(a4)
		subq	#1,Bob_Y_Position(a5)
		bra.s	.Move_Y_Cnt
.Move_Down	addq	#1,Bob_Y_Position(a4)
		addq	#1,Bob_Y_Position(a5)
.Move_Y_Cnt	*--*>Make_Up_Down_Move
		move	BoxH_Y_Acce(a4),d0
		add	d0,BoxH_Y_Speed(a4)
		move.b	BoxH_Y_Speed(a4),d0
		ext.w	d0
		add	d0,Bob_Y_Position(a4)
		add	d0,Bob_Y_Position(a5)
.Make_Acce_Corret	*--*>Acce auf Vorzeichen berprfen
		tst	BoxH_Y_Acce(a4)
		bpl.s	.PosSpeed_Vgl
.NegSpeed_Vgl	cmp.b	#-3,BoxH_Y_Speed(a4)
		beq.s	.NegAcce
		bra.s	.AcceOk
.PosSpeed_Vgl	cmp.b	#3,BoxH_Y_Speed(a4)
		beq.s	.NegAcce
		bra.s	.AcceOk
.NegAcce		*--*>Acce negieren
		neg	BoxH_Y_Acce(a4)
.AcceOk		*--*>Test auf Y Koolisions
		tst.b	BoxH_Y_Speed(a4)
		bpl.s	.Test_Y_Ground
		*--*>Test Y Kollision !
		move	Bob_X_Position(a4),d0
		add	#24,d0
		move	Bob_Y_Position(a4),d1
		jsr	Get_Block_Flags
		swap	d0
		btst	#SCR_KOLLISION_BIT,d0
		beq	.End_Move
		*--*>Y Up Kollision
		and	#%1111111111110000,Bob_Y_Position(a4)
		and	#%1111111111110000,Bob_Y_Position(a5)
		add	#16,Bob_Y_Position(a4)
		add	#16,Bob_Y_Position(a5)
		move.w	#$0000,BoxH_Y_Speed(a4)
		move	#BOXH_ACCE_P,BoxH_Y_Acce(a4)
		moveq	#8,d3
		moveq	#-4,d4
		jsr	ENTER_SMOKE_X_Offs
		IFEQ	SOUNDFX
		moveq	#10,d0
		jsr	TFMX+16
		ENDC
		bra	.End_Move
.Test_Y_Ground	*--*>Test Ground
		move	Bob_X_Position(a4),d0
		add	#24,d0
		move	Bob_Y_Position(a4),d1
		add	#32,d1
		jsr	Get_Block_Icon
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#boden,Block_Through(a1)
		bne.s	.End_Move
		*--*>Init End Jump Anim
		move	Bob_Y_Position(a4),d0
		and	#$fff0,Bob_Y_Position(a4)
		move	Bob_Y_Position(a4),d1
		sub	d0,d1
		add	d1,Bob_Y_Position(a5)
		move.w	#$0-$0100,BoxH_Y_Speed(a4)
		move	#BOXH_ACCE_N,BoxH_Y_Acce(a4)
		moveq	#8,d3
		moveq	#0,d4
		jsr	ENTER_SMOKE_X_Offs
		IFEQ	SOUNDFX
		moveq	#3,d0
		jsr	TFMX+16
		ENDC
.End_Move	rts
*---------------------------------------------------------------------------
.Decide_X_Dir	*--*>Decide if TIMEt is LEft or Right
		move	BoxH_X_Speed(a4),d1
		lea	WorkRam,a2
		move	TEMET_X_Position(a2),d0
		add	#16,d0
		sub	Bob_X_Position(a4),d0
		sub	#24,d0
		bmi.s	.BoxH_Right
.BoxH_Left	*--*> BoxH is Left
		move	#1,BoxH_X_Speed(a4)
		cmp	BoxH_X_Speed(a4),d1
		bne.s	.Init_NotDecide
		rts
.BoxH_Right	*--*> BoxH is Right
		move	#-1,BoxH_X_Speed(a4)
		cmp	BoxH_X_Speed(a4),d1
		bne.s	.Init_NotDecide
		rts
.Init_NotDecide	*--*>Gegenaktion gegen nicht entscheiden
		move.b	#40,BoxH_Time_Force_Dir(a4)
		jsr	.Make_Huhn_Dirs
		rts
*---------------------------------------------------------------------------
.Test_TIMET_Hit_Box	*--*>Test ob Temet auf Kiste gesprungen ist
		lea	WorkRam,a2
		jsr	KollTopBobTest
		tst	d7
		bmi	.NoKollK
		*--Kollision ! Test Box should fall down
		lea	WorkRam,a2
		jsr	Make_Bump
		moveq	#8,d3
		moveq	#0,d4
		jsr	ENTER_SMOKE_X_Offs
		moveq	#8,d3
		moveq	#0,d4
		jsr	ENTER_SMOKE_Y_Offs
		move.b	#1,BoxH_Fall_Down(a4)
		move	#$0100,BoxH_Y_Speed(a4)
		IFEQ	SOUNDFX
		moveq	#9,d0
		jsr	TFMX+16
		ENDC
.NoKollK		rts
*---------------------------------------------------------------------------
.Make_Huhn_Dirs	*--*>Test which dir box is flying
		tst	BoxH_X_Speed(a4)
		bpl.s	.Make_Right_Dir
.Make_Left_Dir	move.l	#UHuhn_Mumie_Left1,Bob_Next_Anim(a5)
		clr.w	Bob_Anim_Delay(a5)
		rts
.Make_Right_Dir	move.l	#UHuhn_Mumie_Right1,Bob_Next_Anim(a5)
		clr.w	Bob_Anim_Delay(a5)
		rts

*----------------------------------------------------------------------------------
.Test_Huhn_Come_Out:
		*--*>Test if Kiste is far Open
		cmp.l	#Box_Open_Cmp,Bob_Next_Anim(a4)
		bne.s	.NoOutCome
		*--*>Huhn Put !
		clr.b	BoxH_Huhn_Out_Offs(a4)
.NoOutCome	rts
*-----------------------------------------------------------------------------------
Test_Fall_Down	*--*>Test if Fall down
		tst.b	BoxH_Fall_Down(a4)
		bne.s	.Fall_Down
		rts
.Fall_Down	*--*>Fall Down
		move	Bob_X_Position(a4),d0
		add	#24,d0
		move	Bob_Y_Position(a4),d1
		add	#32,d1
		jsr	Get_Block_Icon
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#boden,Block_Through(a1)
		beq.s	.Down_At_Ground

		add	#$0020,BoxH_Y_Speed(a4)
		move.b	BoxH_Y_Speed(a4),d0
		ext.w	d0
		add	d0,Bob_Y_Position(a4)
		add	d0,Bob_Y_Position(a5)
		rts
.Down_At_Ground	*--*>Ground !
		moveq	#8,d3
		moveq	#0,d4
		jsr	ENTER_SMOKE_X_Offs
		moveq	#8,d3
		moveq	#0,d4
		jsr	ENTER_SMOKE_Y_Offs
		move.b	#1,BoxH_Force_Dead(a4)
		IFEQ	SOUNDFX
		moveq	#11,d0
		jsr	TFMX+16
		ENDC
		rts
*---------------------------------------------------------------------------
ENDE_TAB		=-222
Huhn_Out_Tab	dc.b	-1,-1,-1,-2,-2,-2,-3,-3,-4,-5,-6,-7,-8,-9,-10
		dc.b	-10,-11,-11,-11,-12,-12,-12,-12,-13,-13,-13,-13,-14,-14,-14,-14
		dc.b	-15,-15,-15,-15,-15,-15,-16
		dc.b	ENDE_TAB
		even
*------------------------------------------------------------------------------------
Box_Close_Anm
UBox_HAnm
Box_Open_Cmp
Box_Open_Anm	dc.w	0
		dc.l	UChest_Obj10
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	Box_Open_Anm

UHuhn_Mumie_Left1:
		dc.w	0
		dc.l	UChick_Obj7
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	UHuhn_Mumie_Left1
UHuhn_Mumie_Right1:
		dc.w	1
		dc.l	UChick_Obj7
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	UHuhn_Mumie_Right1



*------------------------------------------------------------------------------------
BoxH_Fall_Down_Rout
		*--*>Standart Routs
		jsr	Standart_BobAnim
		move.l	BoxH_Huhn_Adr(a4),a5
		*--*>test if out Range
		jsr	Test_Bob_Out
		cmp.b	#BOB_FALSE,Bob_Used(a4)
		bne.s	.NoOut_Huhn
		*--*>out Huhn
		move.b	#BOB_FALSE,Bob_Used(a5)
		rts
.NoOut_Huhn	*--*>Other Routs
		jsr	Box_System_Show_Rout
		*--*>Huhn_Go_In
		lea	.Huhn_In_Tab,a0
		moveq	#0,d0
		moveq	#0,d2
		move.b	BoxH_Huhn_Out_Offs(a4),d0
		cmp.b	#ENDE_TAB,(a0,d0)
		beq.s	.Init_Out_Ende
		move.b	(a0,d0),d1
		addq.b	#1,BoxH_Huhn_Out_Offs(a4)
		ext.w	d1
		move	d1,Bob_Y_Offset(a5)
		bra.s	.First_Routs
.Init_Out_Ende	;move.l	#RoutRts,Bob_Routine(a5)
.First_Routs	*--*>Test if ShoHuhn Out
		jsr	Test_TEMET_Hit
		jsr	Test_Fall_Down
		tst.b	BoxH_Force_Dead(a4)
		beq.s	.NothingDead
		move.b	#BOB_FALSE,Bob_Used(a4)
		move.b	#BOB_FALSE,Bob_Used(a5)
.NothingDead	rts
*---------------------------------------------------------------------------
.Huhn_In_Tab	dc.b	-15,-14,-13,-12,-11,-10,-09,-08,-07,-06,-05,-04,-03,-02,-01
		dc.b	ENDE_TAB
		even
**************************************************************************************
*-------------------------------------------------------------------------------------
Box_Fly_X_Dir	=Bob_Special_1			;B
Box_Fly_Y_Dir	=Bob_Special_1+1		;B
Box_Fly_Up_Border	=Bob_Special_2		;B
Box_Fly_Down_Border	=Bob_Special_2+1	;B
Box_Fly_Y_Speed	=Bob_Special_3			;W
Box_Fly_Y_Acce	=Bob_Special_4			;W
Box_Fly_Force_Y	=Bob_Koords_Save1		;B
Box_Fly_Force_X	=Bob_Koords_Save1+1		;B
Box_Fly_Which_Rout	=Bob_Koords_Save1+2	;B
*---------------------------------------------------------------------------


**************************************************************************************
*-------------------------------------------------------------------------------------
*--------------	HUHN + STONE INITIALISIEREN
*-------------------------------------------------------------------------------------
HUSTONE_I_R:	*--*>First Init Huhn
		move.l	a4,a5
		move	#S_HUHN_RIGHT,d0
		move	Bob_X_Position(a4),d1
		move	Bob_Y_Position(a4),d2
 		move.l	Bob_Entry_Adress(a4),a1
		jsr	Search_Bob_Entry
		*--*>Init Stone
		move.l	a5,a4
		jsr	Search_Stone_Entry
		tst	d7
		bmi.s	.EndeStone
		jsr	Init_Stone_VVals
		move.l	Act_Stone_Tab(a4),a2
		move	#$0100,TEMET_Speed_X(a2)
		move.l	#Stone_Move_Dir,Bob_Routine(a4)
		and	#$fff0,Bob_Y_Position(a4)
		add	#16,Bob_Y_Position(a4)
		add	#32,Bob_X_Position(a4)
		move.l	#Area_Enter_Vector+WorkRam,Bob_Entry_Adress(a4)
.EndeStone		*--*>
		rts
*-------------------------------------------------------------------------------------
HUSTONE_I_L:	*--*>First Init Huhn
		move.l	a4,a5
		move	#S_HUHN_LEFT,d0
		move	Bob_X_Position(a4),d1
		add	#16,d1
		move	Bob_Y_Position(a4),d2
 		move.l	Bob_Entry_Adress(a4),a1
		jsr	Search_Bob_Entry
		*--*>Init Stone
		move.l	a5,a4
		jsr	Search_Stone_Entry	
		tst	d7
		bmi.s	.EndeStone
		jsr	Init_Stone_VVals
		move.l	Act_Stone_Tab(a4),a2
		move	#$ff00,TEMET_Speed_X(a2)
		move.l	#Stone_Move_Dir,Bob_Routine(a4)
		and	#$fff0,Bob_Y_Position(a4)
		add	#16,Bob_Y_Position(a4)
		sub	#16,Bob_X_Position(a4)
		move.l	#Area_Enter_Vector+WorkRam,Bob_Entry_Adress(a4)
.EndeStone		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
STONE_Rout1_InitU	*--*>Init Stone Alone
		jsr	Search_Stone_Entry
		move.l	#STONE_Speed,Bob_Routine(a4)
		jsr	Init_Stone_VVals
		rts
*-------------------------------------------------------------------------------------
Init_Stone_VVals	*--*>Init Stone Various Vals
		move.l	#Show_UnderObject,Stone_Show_Rout(a4)
		move.l	#USTONE_Wait_Anm,Stone_Wait_Anm(a4)
		move.l	#USTONE_Left_Anm,Stone_Left_Anm(a4)
		move.l	#USTONE_Right_Anm,Stone_Right_Anm(a4)
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
USTONE_Wait_Anm:	dc.w	0
		dc.l	UBarrel_Obj0,0
		dc.w	ENTRY_END
		dc.l	USTONE_Wait_Anm
USTONE_Left_Anm:	dc.w	0
		dc.l	UBarrel_Obj0,0
		dc.w	0
		dc.l	UBarrel_Obj1,0
		dc.w	1
		dc.l	UBarrel_Obj0,0
		dc.w	1
		dc.l	UBarrel_Obj1,0
		dc.w	ENTRY_END
		dc.l	USTONE_Left_Anm
USTONE_Right_Anm:	dc.w	1
		dc.l	UBarrel_Obj1,0
		dc.w	1
		dc.l	UBarrel_Obj0,0
		dc.w	0
		dc.l	UBarrel_Obj1,0
		dc.w	0
		dc.l	UBarrel_Obj0,0
		dc.w	ENTRY_END
		dc.l	USTONE_Right_Anm
**************************************************************************************
*-------------------------------------------------------------------------------------
*--------------	HUHN
*-------------------------------------------------------------------------------------
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UHuhn_Anim_Adrs
		dc.l	UHuhn_FL_Anm,UHuhn_FR_Anm
		dc.l	UHuhn_Mumie_Left,UHuhn_Mumie_Right
		dc.l	UHuhn_Skelett_Left,UHuhn_Skelett_Right
		dc.l	UChick_Obj2,UChick_Obj3
		dc.w	Under_EnemyVRam/32
		dc.l	RoutRts

UHuhn_Skelett_Right:	dc.w	1
		dc.l	UChick_Obj4
		dc.w	6,7
		dc.w	ENTRY_END
		dc.l	UHuhn_Skelett_Right
UHuhn_Skelett_Left:	dc.w	0
		dc.l	UChick_Obj4
		dc.w	6,7
		dc.w	ENTRY_END
		dc.l	UHuhn_Skelett_Left
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UHuhn_Mumie_Right:	dc.w	1
		dc.l	UChick_Obj0,0
		dc.w	ENTRY_END
		dc.l	UHuhn_Mumie_Right
UHuhn_Mumie_Left:	dc.w	0
		dc.l	UChick_Obj0,0
		dc.w	ENTRY_END
		dc.l	UHuhn_Mumie_Left
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UHuhn_FL_Anm:	dc.w	0
		dc.l	UChick_Obj0
		dc.w	0,0
		dc.w	0
		dc.l	UChick_Obj1
		dc.w	0,-2
		dc.w	0
		dc.l	UChick_Obj1
		dc.w	0,-4
		dc.w	0
		dc.l	UChick_Obj1
		dc.w	0,-6
		dc.w	0
		dc.l	UChick_Obj1
		dc.w	0,-7
		dc.w	0
		dc.l	UChick_Obj1
		dc.w	0,-8
		dc.w	0
		dc.l	UChick_Obj1
		dc.w	0,-9
		dc.w	0
		dc.l	UChick_Obj0
		dc.w	0,-9
		dc.w	0
		dc.l	UChick_Obj0
		dc.w	0,-8
		dc.w	0
		dc.l	UChick_Obj0
		dc.w	0,-7
		dc.w	0
		dc.l	UChick_Obj0
		dc.w	0,-6
		dc.w	0
		dc.l	UChick_Obj0
		dc.w	0,-4
		dc.w	0
		dc.l	UChick_Obj0
		dc.w	0,-2
		dc.w	0
		dc.l	UChick_Obj0
		dc.w	0,-1
		dc.w	ENTRY_END
		dc.l	UHuhn_FL_Anm
UHuhn_FR_Anm	dc.w	1
		dc.l	UChick_Obj0
		dc.w	0,0
		dc.w	1
		dc.l	UChick_Obj1
		dc.w	0,-2
		dc.w	1
		dc.l	UChick_Obj1
		dc.w	0,-4
		dc.w	1
		dc.l	UChick_Obj1
		dc.w	0,-6
		dc.w	1
		dc.l	UChick_Obj1
		dc.w	0,-7
		dc.w	1
		dc.l	UChick_Obj1
		dc.w	0,-8
		dc.w	1
		dc.l	UChick_Obj1
		dc.w	0,-9
		dc.w	1
		dc.l	UChick_Obj0
		dc.w	0,-9
		dc.w	1
		dc.l	UChick_Obj0
		dc.w	0,-8
		dc.w	1
		dc.l	UChick_Obj0
		dc.w	0,-7
		dc.w	1
		dc.l	UChick_Obj0
		dc.w	0,-6
		dc.w	1
		dc.l	UChick_Obj0
		dc.w	0,-4
		dc.w	1
		dc.l	UChick_Obj0
		dc.w	0,-2
		dc.w	1
		dc.l	UChick_Obj0
		dc.w	0,-1
		dc.w	ENTRY_END
		dc.l	UHuhn_FR_Anm


*-------------------------------------------------------------------------------------
UHuhn_Init		*--*>Init Anim Informations
		sub	#16,Bob_X_Position(a4)
		move.l	#UHuhn_Anim_Adrs,Huhn_Anim_Adrs(a4)
		move.l	#Show_UnderObject,WHuhn_Show_Rout(a4)
		add	#10,Bob_Y_Position(a4)
		move.l	#Conv_Huhn_SkelI,Huhn_Conv_RoutI(a4)
		bra	Huhn_Init
*-------------------------------------------------------------------------------------
Conv_Huhn_SkelI	*--*>Init Conv Skel
		move	Bob_Y_Offset(a4),d0
		add	d0,Bob_Y_Position(a4)
		clr.w	Bob_Y_Offset(a4)
		addq	#5,Bob_Y_Position(a4)
		subq	#4,TEMET_Y_Position(a6)
		move.w	#$0300,UHuhn_Y_Speed(a4)
		clr.w	Huhn_Wait(a4)
		move.l	#Conv_Huhn_Skel,Bob_Routine(a4)
		clr.b	Huhn_No_Move(a4)
		IFEQ	SOUNDFX
		moveq	#9,d0
		jsr	TFMX+16
		ENDC

		*--*>Init Huhn Skelett
		move.l	Huhn_Anim_Adrs(a4),a0
		tst.b	WHuhn_X_Dir(a4)
		bpl.s	.IRightSkeletton
		move.l	Huhn_Conv_Left_Adr(a0),Bob_Next_Anim(a4)
		jsr	Get_Next_Bob_Frame
		move	#-6,Bob_X_Offset(a4)
		bra.s	.AfterISkel1
.IRightSkeletton	move.l	Huhn_Conv_Right_Adr(a0),Bob_Next_Anim(a4)
		jsr	Get_Next_Bob_Frame
.AfterISkel1

*-------------------------------------------------------------------------------------
Conv_Huhn_Skel	*--*> Convert Huhn into Skel
		jsr	Test_Bob_Out
		jsr	Test_TEMET_Hit
		jsr	Test_TIMET_Hit_HuhnWA
		cmp.l	#WHuhn_Fall_Down,Bob_Routine(a4)
		bne.s	.NoHuHnHit
		jsr	Out_Bob_Damage
		rts
.NoHuHnHit	tst	Huhn_Wait(a4)
		beq.s	.No_Wait
		subq	#1,Huhn_Wait(a4)
		bne.s	.EndkonvR
.AfterISkel	move.l	#Huhn_Skel_Stand_Up,Bob_Routine(a4)
		clr.w	Huhn_MoveTab_Offs(a4)
		move	Bob_Y_Position(a4),Huhn_Old_Y_Pos(a4)
		move.b	#1,Huhn_Foot1_OffsX(a4)
		move.b	#0,Huhn_Foot1_OffsY(a4)
		move.b	#16,Huhn_Foot2_OffsX(a4)
		move.b	#0,Huhn_Foot2_OffsY(a4)
		jsr	ENTER_SMOKE_X
		jsr	ENTER_SMOKE_Y
		clr.b	Huhn_X_Range(a4)
		rts
.No_Wait		jsr	Conv_Make_X_Speed
		jsr	Conv_Make_Y_Speed
.EndkonvR		move.l	WHuhn_Show_Rout(a4),a0
		jsr	(a0)
		rts
*-------------------------------------------------------------------------------------
Conv_Make_X_Speed	*--*>make X Speed for Conv
		tst.b	Huhn_No_Move(a4)
		bmi.s	.Ende
		jsr	TestHuhnXKoll
		tst	d7
		beq.s	.MoveX
		move.b	d7,Huhn_No_Move(a4)
		move.b	WHuhn_X_Dir(a4),d3
		neg.b	d3
		ext.w	d3
		asl	#4,d3
		moveq	#0,d4
		jsr	ENTER_SMOKE_Y_Offs
		rts
.MoveX		*--*>Move in X Dir
		tst.b	WHuhn_X_Dir(a4)
		bpl.s	.Move_It_Right
.Move_It_Left	subq	#1,Bob_X_Position(a4)
		rts
.Move_It_Right	addq	#1,Bob_X_Position(a4)
.Ende		rts
*-------------------------------------------------------------------------------------
Conv_Make_Y_Speed	*--*>make Y Speed for Conv
		add	#$0060,UHuhn_Y_Speed(a4)
		move.b	UHuhn_Y_Speed(a4),d0
		ext.w	d0
		add	d0,Bob_Y_Position(a4)
		*--*>Check if Bump on Ground
		move	Bob_X_Position(a4),d0
		move	Bob_Y_Position(a4),d1
		add	#16,d0
		add	#36,d1
		jsr	Get_Block_All
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#swand,Block_Through(a1)
		beq.s	.Out_Huhn
		cmp.b	#boden,Block_Through(a1)
		bne.s	.NoGroundKoll
		cmp.b	#SCHRAEG,Block_Schraeg_Flag(a1)
		beq	.Out_Huhn
		sub	d3,Bob_Y_Position(a4)
		IFEQ	SOUNDFX
		moveq	#10,d0
		jsr	TFMX+16
		ENDC
		cmp.b	#3,UHuhn_Y_Speed(a4)
		bls.s	.OKYS
		move.b	#3,UHuhn_Y_Speed(a4)
.OKYS		subq.b	#1,UHuhn_Y_Speed(a4)
		bne.s	.NoWaitInit
		*--*>Init Wait and No Move
		move.b	#-1,Huhn_No_Move(a4)
		move	#10,Huhn_Wait(a4)
		rts
.NoWaitInit		neg	UHuhn_Y_Speed(a4)
		jsr	ENTER_Mull
		jsr	ENTER_SMOKE_Y
.NoGroundKoll	rts
*-------------------------------------------------------------------------------------
.Out_Huhn		*--*>Out this Bob
		jsr	ENTER_SMOKE_X
		jsr	ENTER_SMOKE_Y
		jsr	ENTER_Mull
		jsr	Out_Bob_Damage
		rts

*-------------------------------------------------------------------------------------
Huhn_Skel_Stand_Up	*--*>langsam aufstehen
		jsr	Test_Bob_Out
		jsr	Test_TEMET_Hit
		tst.b	Akt_Copper_Frame(a6)
		bne	.NoYMoveOn
		lea	.StandTab,a0
		add	Huhn_MoveTab_Offs(a4),a0
		addq	#1,Huhn_MoveTab_Offs(a4)
		move.b	(a0),d0
		cmp.b	#100,d0
		bne.s	.OkYUp		
		move.l	#Huhn_Skel_Move,Bob_Routine(a4)
		clr.w	Huhn_MoveTab_Offs(a4)
		jsr	Display_Skel

		rts
.OkYUp		ext.w	d0
		add	d0,Bob_Y_Position(a4)
.NoYMoveOn		jsr	Test_TIMET_Hit_HuhnWA
		cmp.l	#WHuhn_Fall_Down,Bob_Routine(a4)
		bne.s	.NoHuHnHit
		jsr	Out_Bob_Damage
		rts
.NoHuHnHit		jsr	Display_Skel
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.StandTab		dc.b	-1,-0,-1,-0,-0,+1,-0,+1,0,0,0,0,-1,0,-1,-0,-1,-0
		dc.b	-1,-0,-1,-0,-0,-0,+1,+0,+0,+1,0,0,-1,0,-1,-0
		dc.b	-1,-0,-0,-0,+1,0,0,+1,0,0,0,+1,0,0,0,0,+1
		dc.b	+100
		even
*-------------------------------------------------------------------------------------
Huhn_Skel_Move	*--*>Skelett Mover
		move	Huhn_Old_Y_Pos(a4),Bob_Y_Position(a4)
		jsr	Test_Bob_Out
		jsr	Test_TEMET_Hit

		tst.b	Akt_Copper_Frame(a6)
		bne.s	.Nichtndern
		move	Bob_X_Position(a4),-(sp)
		jsr	Huhn_Move_RangeW
		move	(sp)+,Bob_X_Position(a4)
.Nichtndern
		jsr	TestHuhnXKoll
		move	Bob_X_Position(a4),d0
		tst.b	WHuhn_X_Dir(a4)
		bmi.s	.OkLeft
		add	#32,d0
.OkLeft		move	Bob_Y_Position(a4),d1
		jsr	TestHuhnRout
		tst	d7
		bpl.s	.NoChangeDir
		neg.b	WHuhn_X_Dir(a4)

.NoChangeDir	move.l	Huhn_Anim_Adrs(a4),a0
		tst.b	WHuhn_X_Dir(a4)
		bpl.s	.InitRight
.InitLeft		move.l	Huhn_Conv_Left_Adr(a0),Bob_Next_Anim(a4)
		jsr	Get_Next_Bob_Frame
		bra.s	.AfterInit
.InitRight		move.l	Huhn_Conv_Right_Adr(a0),Bob_Next_Anim(a4)
		jsr	Get_Next_Bob_Frame

.AfterInit		jsr	Make_Feet_Koords_S
		jsr	Test_TIMET_Hit_HuhnWA
		cmp.l	#WHuhn_Fall_Down,Bob_Routine(a4)
		bne.s	.NoHuHnHit
		jsr	Out_Bob_Damage
		rts
.NoHuHnHit		jsr	Display_Skel
		rts
*-------------------------------------------------------------------------------------
Make_Feet_Koords_S	tst.b	WHuhn_X_Dir(a4)
		bpl	.FeetRight
.FeetLeft		lea	Huhn_MoveTab_Skel_L,a0
		move	Huhn_MoveTab_Offs(a4),d7
		move	Huhn_MoveTab_Offs(a4),d7
		addq	#2,d7
		cmp	#40*4,d7
		blo.s	.NoOverflowL1
		moveq	#0,d7
.NoOverflowL1	move	d7,Huhn_MoveTab_Offs(a4)
		move	d7,d6
		moveq	#0,d2
		cmp	#20*4,d6
		blo.s	.NoOverflowL2
		sub	#20*4,d6
.NoOverflowL2	lea	Huhn_Body_Offs_L,a1
		lsr	#1,d6
		move.b	(a1,d6),d2
		move	#-6,Bob_X_Offset(a4)
		move	d2,Bob_Y_Offset(a4)
		lea	Huhn_Move_Or_Not_L,a1
		tst.b	(a1,d6)
		beq.s	.NoMoveXL
		subq	#1,Bob_X_Position(a4)
.NoMoveXL
		*--*>Get Koords for feet
		move.b	(a0,d7),Huhn_Foot1_OffsX(a4)
		move.b	1(a0,d7),Huhn_Foot1_OffsY(a4)
		move.b	20*4(a0,d7),Huhn_Foot2_OffsX(a4)
		move.b	20*4+1(a0,d7),Huhn_Foot2_OffsY(a4)
		rts

.FeetRight		lea	Huhn_MoveTab_Skel_R,a0
		move	Huhn_MoveTab_Offs(a4),d7
		addq	#2,d7
		cmp	#40*4,d7
		blo.s	.NoOverflowR1
		moveq	#0,d7
.NoOverflowR1	move	d7,Huhn_MoveTab_Offs(a4)
		move	d7,d6
		moveq	#0,d2
		lsr	#1,d6
		cmp	#20*2,d6
		blo.s	.NoOverflowR2
		sub	#20*2,d6
.NoOverflowR2	lea	Huhn_Body_Offs_R,a1
		move.b	(a1,d6),d2
		move	#6,Bob_X_Offset(a4)
		move	d2,Bob_Y_Offset(a4)
		lea	Huhn_Move_Or_Not_R,a1
		tst.b	(a1,d6)
		beq.s	.NoMoveXR
		addq	#1,Bob_X_Position(a4)
.NoMoveXR
		*--*>Get Koords for feet
		move.b	(a0,d7),Huhn_Foot1_OffsX(a4)
		move.b	1(a0,d7),Huhn_Foot1_OffsY(a4)
		move.b	20*4(a0,d7),Huhn_Foot2_OffsX(a4)
		move.b	20*4+1(a0,d7),Huhn_Foot2_OffsY(a4)
		rts

*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Huhn_MoveTab_Skel_R	dc.b	01,00,01,01,01,01,01,02,02,02,02,02,02,03,03,03
		dc.b	03,04,03,04,03,05,03,05,04,06,04,07,05,07,05,08
		dc.b	06,08,07,08,08,08,09,08,10,08,11,08,12,08,12,07
		dc.b	13,06,14,05,15,04,15,03,15,02,15,01,16,01,16,00
		dc.b	16,00,16,00,16,00,16,00,16,00,16,00,16,00,16,00

.Second_Foot	dc.b	16,00,16,00,15,00,15,00,14,00,14,00,13,00,13,00
		dc.b	12,00,12,00,11,00,11,00,10,00,10,00,09,00,09,00
		dc.b	08,00,08,00,07,00,07,00,06,00,06,00,05,00,05,00
		dc.b	04,00,04,00,03,00,03,00,02,00,02,00,01,00,01,00
		dc.b	01,00,01,00,01,00,01,00,01,00,01,00,01,00,01,00

		dc.b	01,00,01,01,01,01,01,02,02,02,02,02,02,03,03,03
		dc.b	03,04,03,04,03,05,03,05,04,06,04,07,05,07,05,08
		dc.b	06,08,07,08,08,08,09,08,10,08,11,08,12,08,12,07
		dc.b	13,06,14,05,15,04,15,03,15,02,15,01,16,01,16,00
		dc.b	16,00,16,00,16,00,16,00,16,00,16,00,16,00,16,00
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Huhn_MoveTab_Skel_L	dc.b	16,00,16,00,16,00,16,00,16,00,16,00,16,00,16,00
		dc.b	16,00,16,01,15,01,15,02,15,03,15,04,14,05,13,06
		dc.b	12,08,12,07,11,08,10,08,09,08,08,08,07,08,06,08
		dc.b	05,07,05,08,04,07,04,06,03,05,03,05,03,04,03,04
		dc.b	02,03,03,03,02,02,02,02,01,02,01,01,01,01,01,00

.Second_Foot	dc.b	01,00,01,00,01,00,01,00,01,00,01,00,01,00,01,00
		dc.b	01,00,01,00,02,00,02,00,03,00,03,00,04,00,04,00
		dc.b	05,00,05,00,06,00,06,00,07,00,07,00,08,00,08,00
		dc.b	09,00,09,00,10,00,10,00,11,00,11,00,12,00,12,00
		dc.b	13,00,13,00,14,00,14,00,15,00,15,00,16,00,16,00

		dc.b	16,00,16,00,16,00,16,00,16,00,16,00,16,00,16,00
		dc.b	16,00,16,01,15,01,15,02,15,03,15,04,14,05,13,06
		dc.b	12,08,12,07,11,08,10,08,09,08,08,08,07,08,06,08
		dc.b	05,07,05,08,04,07,04,06,03,05,03,05,03,04,03,04
		dc.b	02,03,03,03,02,02,02,02,01,02,01,01,01,01,01,00
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Huhn_Body_Offs_R	dc.b	+7,+7,+7,+6,+6,+6,+5,+5
		dc.b	+4,+4,+3,+3,+3,+2,+2,+2
		dc.b	+1,+1,+1,+0,+0,+0,+0,+0
		dc.b	+0,+0,+0,+1,+1,+1,+2,+2
		dc.b	+3,+3,+4,+4,+5,+5,+6,+6

Huhn_Body_Offs_L	dc.b	+4,+4,+5,+5,+6,+6
		dc.b	+7,+7,+7,+6,+6,+6,+5,+5
		dc.b	+4,+4,+3,+3,+3,+2,+2,+2
		dc.b	+1,+1,+1,+0,+0,+0,+0,+0
		dc.b	+0,+0,+0,+1,+1,+1,+2,+2
		dc.b	+3,+3
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Huhn_Move_Or_Not_R	dc.b	1,00,1,00,1,00,1,00
		dc.b	1,00,1,00,1,00,1,00
		dc.b	1,00,1,00,1,00,1,00
		dc.b	1,00,1,00,1,00,1,00
		dc.b	00,00,00,00,00,00,00,00
Huhn_Move_Or_Not_L	dc.b	00,00,00,00,00,00,00,00
		dc.b	1,00,1,00,1,00,1,00
		dc.b	1,00,1,00,1,00,1,00
		dc.b	1,00,1,00,1,00,1,00
		dc.b	1,00,1,00,1,00,1,00
		even
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

*-------------------------------------------------------------------------------------
*-------------------------------------------------------------------------------------
Display_Skel	*--*>Show Foot 1
		moveq	#0,d2
		move	Bob_X_Position(a4),d0
		move	Huhn_Old_Y_Pos(a4),d1
		add	#32,d1
		move.b	Huhn_Foot1_OffsX(a4),d2
		add	d2,d0
		move.b	Huhn_Foot1_OffsY(a4),d2
		sub	d2,d1
		jsr	Check_Object_Borders_Jan
		beq.s	.NoDisplayF1
		move.w	#Under_EnemyVRam/32,d3
		move.l	Huhn_Anim_Adrs(a4),a0
		move.l	Huhn_Sigel_Foot1(a0),a0
		jsr	Add_Simple_Sigel
.NoDisplayF1	*--*>Show Huhn
		move.l	WHuhn_Show_Rout(a4),a0
		jsr	(a0)
		*--*>Show Foot 2
		moveq	#0,d2
		move	Bob_X_Position(a4),d0
		move	Huhn_Old_Y_Pos(a4),d1
		add	#32,d1
		move.b	Huhn_Foot2_OffsX(a4),d2
		add	d2,d0
		move.b	Huhn_Foot2_OffsY(a4),d2
		sub	d2,d1
		jsr	Check_Object_Borders_Jan
		beq.s	.NoDisplayF2
		move.w	#Under_EnemyVRam/32,d3
		move.l	Huhn_Anim_Adrs(a4),a0
		move.l	Huhn_Sigel_Foot2(a0),a0
		jsr	Add_Simple_Sigel
.NoDisplayF2	rts

**************************************************************************************
*-------------------------------------------------------------------------------------
*---------------	MULL DINGENS
*-------------------------------------------------------------------------------------
Mull_R_Anm:		dc.w	1
		dc.l	UMull_Obj0,0
		dc.w	ENTRY_END
		dc.l	Mull_R_Anm
Mull_L_Anm:		dc.w	0
		dc.l	UMull_Obj0,0
		dc.w	ENTRY_END
		dc.l	Mull_L_Anm
*------------------------------------------------------------------------------------
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Mull_Rout		*--*>Standart Mull Routs
		jsr	Standart_BobAnim
		jsr	Test_Bob_Out
		jsr	Make_Mull_TIME
		jsr	Make_Mull_Speeds
		rts
*-------------------------------------------------------------------------------------
ENTER_Mull		*---*>Enter vier Mull
		movem.l	a0-a6/d0-d7,-(sp)
.Enter_First_Mull	*--*>Enter 1
		move.l	a4,a5
		lea	Mull_1_1,a0
		jsr	Get_Entry_Mull
		tst	d0
		bmi.s	.NoEntryFound
		jsr	Enter_FlyData
		move.l	#Show_UnderObject,Mull_Show_Rout(a4)
		move.l	a5,a4
		*--*>Enter 2
		lea	Mull_1_2,a0
		jsr	Get_Entry_Mull
		tst	d0
		bmi.s	.NoEntryFound
		jsr	Enter_FlyData
		move.l	#Show_UnderObject,Mull_Show_Rout(a4)
		move.l	a5,a4
		*--*>Enter 3
		lea	Mull_1_3,a0
		jsr	Get_Entry_Mull
		tst	d0
		bmi.s	.NoEntryFound
		jsr	Enter_FlyData
		move.l	#Show_UnderObject,Mull_Show_Rout(a4)
		move.l	a5,a4
		*--*>Enter 4
		lea	Mull_1_4,a0
		jsr	Get_Entry_Mull
		tst	d0
		bmi.s	.NoEntryFound
		jsr	Enter_FlyData
		move.l	#Show_UnderObject,Mull_Show_Rout(a4)
.NoEntryFound	*--*>kein Eintrag mehr fei
		move.l	a5,a4
		movem.l	(sp)+,a0-a6/d0-d7
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Get_Entry_Mull	*--*>Search_Entry for Mull
		move	#S_HUHN_Mull,d0
		move	Bob_X_Position(a4),d1
		add	(a0)+,d1
		move	Bob_Y_Position(a4),d2
		add	(a0)+,d2
		lea	Area_Enter_Vector(a6),a1
		jsr	Search_Bob_Entry
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Mull_1_1		*--*>Mull 1
		dc.w	-16-4+8,8
		dc.l	Mull_L_Anm
		dc.w	30
		dc.b	-1,0
		dc.w	$fe00,$0040,$ff00,$0040
Mull_1_2		*--*>Mull 2
		dc.w	-16+6-8,2
		dc.l	Mull_L_Anm
		dc.w	30
		dc.b	-1,0
		dc.w	$ff00,$0040,$fe00,$0040
Mull_1_3		*--*>Mull 3
		dc.w	-16+26-8,2
		dc.l	Mull_R_Anm
		dc.w	30
		dc.b	+1,0
		dc.w	$0100,0-$0060,$fe00,$0040
Mull_1_4		*--*>Mull 4
		dc.w	-16+32+4-8,8
		dc.l	Mull_R_Anm
		dc.w	30
		dc.b	1,0
		dc.w	$0200,0-$0060,$ff00,$0040
**************************************************************************************
*-------------------------------------------------------------------------------------
*-------------	UNDER DOOR
*-------------------------------------------------------------------------------------
UNDER_Door_Anim_Tab	dc.l	UDoor_Anim_Norm,UDoor_Anim_Small,UDoor_Obj2
		dc.w	Under_EnemyVRam/32

UTest_Init_Doors:	*--*>Init Water Dingens
		move.l	#UNDER_Door_Anim_Tab,Door_Anims(a4)
		move.l	#Test_Init_Doors,Bob_Routine(a4)
		move.l	#Show_UnderObject,Door_Show_Rout(a4)
		rts
*-------------------------------------------------------------------------------------
UDoor_Anim_Norm:	dc.w	0
		dc.l	UDoor_Obj0,0
		dc.w	ENTRY_END
		dc.l	UDoor_Anim_Norm
UDoor_Anim_Small:	dc.w	0
		dc.l	UDoor_Obj1,0
		dc.w	ENTRY_END
		dc.l	UDoor_Anim_Small

**************************************************************************************
**************************************************************************************
Show_UnderObject:	*--*>Show it
		move.w	#Under_EnemyVRam/32,d3
		move.l	Bob_SigelInfo(a4),a0
		move.w	Bob_FlipStatus(a4),d2
		jsr	Show_Simple_Object
		rts
**************************************************************************************
*-------------------------------------------------------------------------------------
*----------------	UNDER BUTTONS
*-------------------------------------------------------------------------------------
**************************************************************************************
*-------------------------------------------------------------------------------------
IU_Button_Nothing:	*--*>Init Button
		and	#$fff0,Bob_Y_Position(a4)
		move.l	#Show_UnderObject,Button_Display(a4)
		move.l	#RoutRts,Button_Routine(a4)
		move.l	#Gl_Button,Bob_Routine(a4)
		move.l	#UnButton_PressAnimTab,Button_Work_Anim(a4)
		move.l	#RoutRts,Button_Out_Rout(a4)
		rts
*-------------------------------------------------------------------------------------
IU_Button_W_U_B:	*--*>Init Button
		and	#$fff0,Bob_Y_Position(a4)
		move.l	#Show_UnderObject,Button_Display(a4)
		move.l	#I_Gl_Water_Up,Button_Routine(a4)
		move.l	#Gl_Button,Bob_Routine(a4)
		move.l	#UnButton_PressAnimTab,Button_Work_Anim(a4)
		move.l	#RoutRts,Button_Out_Rout(a4)
		rts
*-------------------------------------------------------------------------------------
IU_Button_W_D_B:	*--*>Init Button
		and	#$fff0,Bob_Y_Position(a4)
		move.l	#Show_UnderObject,Button_Display(a4)
		move.l	#I_Gl_Water_Down,Button_Routine(a4)
		move.l	#Gl_Button,Bob_Routine(a4)
		move.l	#UnButton_PressAnimTab,Button_Work_Anim(a4)
		move.l	#RoutRts,Button_Out_Rout(a4)
		rts
*-------------------------------------------------------------------------------------
IU_Button_Door_Up:	*--*>Init Button
		and	#$fff0,Bob_Y_Position(a4)
		move.l	#Show_UnderObject,Button_Display(a4)
		move.l	#I_Gl_Door_Up,Button_Routine(a4)
		move.l	#Gl_Button,Bob_Routine(a4)
		move.l	#UnButton_PressAnimTab,Button_Work_Anim(a4)
		move.l	#But_Clear_Door_Up,Button_Out_Rout(a4)
		rts
*-------------------------------------------------------------------------------------
*-------------------------------------------------------------------------------------
UnButton_Wait_AnimTab:	dc.w	0
		dc.l	UButton_Obj0,0
		dc.w	ENTRY_END
		dc.l	UnButton_Wait_AnimTab
UnButton_PressAnimTab:	dc.w	0
		dc.l	UButton_Obj1,8
		dc.w	0
		dc.l	UButton_Obj1,8
		dc.w	0
		dc.l	UButton_Obj1,8
		dc.w	0
		dc.l	UButton_Obj1,8
		dc.w	0
		dc.l	UButton_Obj0,0
		dc.w	ENTRY_END
		dc.l	UnButton_Wait_AnimTab
**************************************************************************************
*-------------------------------------------------------------------------------------
*----------------	UNDER FISCHE
*-------------------------------------------------------------------------------------
**************************************************************************************
UNDER_FISH_ANIM_TAB	dc.l	UFish_Swim_Right_Anm,UFish_Swim_Left_Anm
		dc.l	UFish_Wait_Right_Anm,UFish_Wait_Left_Anm
		dc.l	UFish_Dam_Right_Anm,UFish_Dam_Left_Anm
*-------------------------------------------------------------------------------------
UFISH_Right_Init:	*--*>Init Right fish
		move.b	#1,Fish_X_Dir(a4)
		bra.s	UFISH_Global_Init
UFISH_Global_Init:	*--*>Init Globals
		move.w	#200,Bob_Out_X_Val(a4)
		move.w	#160+32,Bob_Out_Y_Val(a4)
		move.b	#MAX_FISH_RANGE/2,Fish_X_Range(a4)
		move.l	#Show_UnderObject,Fish_Display(a4)
		move.l	#UNDER_FISH_ANIM_TAB,Fish_Anim_Tab(a4)
		move.l	#Fish_Routine,Bob_Routine(a4)
		rts
*-------------------------------------------------------------------------------------
UFish_Dam_Right_Anm:	dc.w	3
		dc.l	UFish_Obj1,0
		dc.w	ENTRY_END
		dc.l	UFish_Dam_Right_Anm
UFish_Wait_Right_Anm:	dc.w	1
		dc.l	UFish_Obj0,0
		dc.w	ENTRY_END
		dc.l	UFish_Swim_Right_Anm
UFish_Swim_Right_Anm:	dc.w	1
		dc.l	UFish_Obj0,0
		dc.w	1
		dc.l	UFish_Obj1,0
		dc.w	ENTRY_END
		dc.l	UFish_Swim_Right_Anm
UFish_Dam_Left_Anm:	dc.w	2
		dc.l	UFish_Obj1,0
		dc.w	ENTRY_END
		dc.l	UFish_Dam_Left_Anm
UFish_Wait_Left_Anm:	dc.w	0
		dc.l	UFish_Obj0,0
		dc.w	ENTRY_END
		dc.l	UFish_Swim_Left_Anm
UFish_Swim_Left_Anm:	dc.w	0
		dc.l	UFish_Obj0,0
		dc.w	0
		dc.l	UFish_Obj1,0
		dc.w	ENTRY_END
		dc.l	UFish_Swim_Left_Anm
**************************************************************************************

**************************************************************************************
	ENDC
